Git在合并后恢复隐藏的更改--no-ff

时间:2012-06-13 20:51:42

标签: git git-merge git-stash git-reset

我经常使用“git stash”和“git stash pop”来保存和恢复工作树中的更改。这就是我所做的,现在我以前未提交的更改已经消失。

git stash -u
git checkout master
git pull --rebase
git checkout dev
git merge --no-ff master
10 files changed, 1000 insertions(+), 2000 deletions(-)
git stash pop 
CONFLICT (content): Merge conflict in file.ext

然后我想我可以恢复合并,我做了:

git reset --hard origin/master
git reset --hard origin/master

现在我在file.ext中的任何地方都没有看到任何我以前隐藏的未提交的更改,只有合并的代码。我怎样才能收回我最初隐藏的所有变化?

1 个答案:

答案 0 :(得分:3)

当您popstash时,它也会从stash中删除它。因此,隐藏的更改被转储回您的工作目录。然后,当您reset时,您还原了相同的更改。

git reset --hard是少数危险的“你可以完全失去工作在这里”的命令之一。 This非常好地解释了reset的不同方面。

总而言之,它们不再是stash,而是reset工作目录。所以他们很可能会失去比特和字节。虽然这些更改曾被隐藏,但您可以通过git fsck --lost-found找到提交。