如何在Sourcetree中推送stash至其他电脑(无需提交代码)
如何将本地Git Stash推送给其他开发者?
Git本身没有直接推送stash的命令,但咱们可以用几个间接的方法,不用提交正式代码就能把stash传递给队友,下面给你详细说两种实用方案,包括命令行和Sourcetree的操作方式:
方案一:用临时分支传递stash
这个方法是把stash转成一个临时分支推送到远程,队友拉取后再转成自己的stash,步骤很清晰:
你的操作(本地Sourcetree/命令行):
命令行方式:
- 把目标stash转成临时分支,比如第一个stash(
stash@{0}):git stash branch temp-stash-0 stash@{0}
第二个stash可以重复操作,创建temp-stash-1分支 - 把临时分支推送到远程仓库:
git push origin temp-stash-0
- 把目标stash转成临时分支,比如第一个stash(
Sourcetree方式:
- 打开左侧的「Stash」面板,右键点击你要共享的stash,选择「Branch from stash」
- 输入临时分支的名称(比如
temp-stash-0),确认创建分支 - 在左侧分支列表找到这个临时分支,右键选择「Push」,推送到远程仓库
队友的操作:
命令行方式:
- 拉取远程的临时分支:
git fetch origin - 切换到这个临时分支:
git checkout temp-stash-0 - 把分支里的改动存为本地stash:
git stash push - 之后可以删除临时分支(本地+远程):
git branch -d temp-stash-0git push origin --delete temp-stash-0
- 拉取远程的临时分支:
Sourcetree方式:
- 点击顶部的「Pull」按钮,拉取远程最新分支
- 在左侧分支列表找到远程的临时分支,右键选择「Checkout」
- 点击顶部的「Stash」按钮,把当前分支的改动存为本地stash
- 右键临时分支选择「Delete」,同时可以勾选「Delete remote branch」删除远程的临时分支
方案二:导出stash为补丁,用补丁分支共享
如果不想创建多个临时分支,可以把stash导出成补丁文件,放到一个专门的补丁分支里推送到远程:
你的操作:
命令行方式:
- 导出stash为补丁文件:
git stash show -p stash@{0} > stash-0.patchgit stash show -p stash@{1} > stash-1.patch - 创建一个专门的补丁分支:
git checkout -b stash-patches - 添加补丁文件并提交:
git add stash-0.patch stash-1.patchgit commit -m "Add shared stash patches" - 推送到远程:
git push origin stash-patches
- 导出stash为补丁文件:
Sourcetree方式:
- 打开终端(Sourcetree顶部「终端」按钮),执行导出补丁的命令
- 点击顶部「Branch」->「New Branch」,创建
stash-patches分支 - 在文件列表里找到补丁文件,右键选择「Add to index」
- 填写提交信息后点击「Commit」,然后右键分支选择「Push」推送到远程
队友的操作:
命令行方式:
- 拉取补丁分支:
git fetch origingit checkout stash-patches - 应用补丁到工作区,或者存为stash:
直接应用补丁
git apply stash-0.patch或者应用后存为stashgit apply stash-0.patchgit stash push
- 拉取补丁分支:
Sourcetree方式:
- 拉取远程补丁分支并checkout
- 打开终端,执行
git apply stash-0.patch应用补丁 - 点击「Stash」按钮把改动存为本地stash
注意事项
- 临时分支和补丁分支都是临时用的,用完记得删除,避免远程仓库分支杂乱
- 如果stash和当前代码有冲突,创建分支或应用补丁时需要先解决冲突再推送
- 补丁文件的兼容性依赖于代码版本,如果队友的本地代码和你差异较大,可能需要调整补丁
内容的提问来源于stack exchange,提问作者Kuldeep Tanwar
相关产品推荐
相关产品推荐

