我经常使用“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
中的任何地方都没有看到任何我以前隐藏的未提交的更改,只有合并的代码。我怎样才能收回我最初隐藏的所有变化?
答案 0 :(得分:3)
当您pop
离stash
时,它也会从stash
中删除它。因此,隐藏的更改被转储回您的工作目录。然后,当您reset
时,您还原了相同的更改。
git reset --hard
是少数危险的“你可以完全失去工作在这里”的命令之一。 This非常好地解释了reset
的不同方面。
总而言之,它们不再是stash
,而是reset
工作目录。所以他们很可能会失去比特和字节。虽然这些更改曾被隐藏,但您可以通过git fsck --lost-found
找到提交。