git stash和git pull


87

我是Git的新手,并且正在使用EGit eclipse插件进行提交。

我修改了几个文件,并保存了更改,然后git pull在命令行中进行了操作,该命令提取了所有最新提交。然后我Apply stashed changes从EGit开始。现在,它应用了我的更改,从上次保存文件提交中提取的更改就消失了。我不确定为什么它不问我关于合并冲突,重写我的更改以及丢失先前的提交更改的问题。

如何获得这些更改?


这听起来似乎不合理。所应用的隐藏将带来未冲突的更改或导致合并冲突。我想你忘了提些什么。另外,您可以重复您的步骤,很可能您的藏匿处仍在列表中,用于git stash list显示它。
2012年

Answers:


207

当您对工作副本进行更改时,请从命令行执行以下操作:

git stash 

这将存储您的更改并清除状态报告

git pull

这将从上游分支拉取更改。确保它在报告中说的快。如果没有,则可能是您进行了意外合并

git stash pop

除非您有冲突,否则这会将隐藏的更改应用回工作副本,并从存储中删除更改。在发生冲突的情况下,它们将保持藏匿状态,因此您可以根据需要重新开始。

如果您需要查看隐藏的内容

git stash list

@java_newbie,如果要隐藏存储并拒绝,则没有办法。但是您可以通过重新设置基准实现相同的结果。命令“ git rebase origin / <上游分支名称>”应该做同样的事情。
yilmazhuseyin 2014年

5
我认为这样做会:git stash && git pull && git stash pop
Fabrice Kabongo

@yilmazhuseyin“相同的结果”是什么意思 您是说git rebase origin/master会产生与相同的结果git stash; git pull; git stash pop吗?
nehem

8
如果使用Git v2.9.0或更高版本,请尝试git pull --rebase --autostash仅供参考
-momocow

1
是否--autostash总是工作?例如,如果我有一些已经在Git中的未跟踪文件?
qräbnö
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.