如何在Git中暂存更改并返回到上一次提交?

5
故事是这样的:
我分支了我的代码库,尝试改变我的 WCF(Windows Communication Foundation)工作方式。一天前,当一切都很顺利时,我将我的更改提交到了我的新分支中,然后开始尝试一些并不太成功的东西,虽然我认为我走在了正确的道路上。
现在我没有时间继续尝试这些东西,我想回到我最后一次提交的状态,但我不想永远失去这些东西。这有可能吗?
2个回答

4

您可以使用 git stash 命令将更改暂存起来,这样您的工作目录会被重置为上一次提交(即 HEAD)。

或者您可以将当前分支分支出一个新的分支,然后在新分支上提交更改。我更喜欢使用分支而不是暂存,因为我认为暂存是一种更加临时/短暂的工具。


所以,当我执行“git branch newbranch”命令时,它会将所有更改复制到该分支,然后执行“git checkout originalbranch”命令,我可以回到最后的检入状态? - user156888
@cvista:git branch 只是创建一个分支,它并不提交任何内容。如果你想保存修改,你需要创建并切换到新的分支,然后提交:git checkout -b newbranch; git add ...; git commit。然后你才能安全地切换到另一个分支。 - Cascabel

3

我建议快速将你的工作放在另一个分支上:

git stash
git checkout -b new-branch-name
git stash apply
git commit -a -m "commit message here"
git checkout current-branch-name

您可以只执行git stash部分,但这样您的东西将永远存在于单一的stash堆栈中。最好把它放在某个地方,以便您可以再次找到它,因为您稍后需要stash队列来进行其他操作。


太棒了 :) 两个答案都正确... 啊啦 [为什么不能标记多个正确的答案?!] - user156888
2
这里完全不需要使用stash。在当前提交处创建并检出一个分支将始终成功。更糟糕的是,您遗漏了重要的步骤:在切换回分支之前应该有一个git commit - Cascabel
哦,你说得对 - 我确实错过了提交。已经修复了。我也同意stash通常是不必要的,但我也遇到了一些奇怪的边缘情况,它可能很重要,而且既然它几乎不会有害,我就留下它。 - Luke Sneeringer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接