【发布时间】:2013-08-15 08:18:46
【问题描述】:
我想恢复当前分支中所有未提交的更改,例如“master”。以下哪个最好用,为什么??:
git checkout -f mastergit reset --hard <last commitID>
【问题讨论】:
-
您可能想read this article 了解结帐和重置之间的区别。
标签: git git-checkout git-reset
我想恢复当前分支中所有未提交的更改,例如“master”。以下哪个最好用,为什么??:
git checkout -f mastergit reset --hard <last commitID>【问题讨论】:
标签: git git-checkout git-reset
他们都做你需要做的事情:丢弃所有未提交的更改,但 checkout 旨在切换到一个新分支,丢弃当前分支上未提交的更改,例如:
git branch
*master
#Do some changes
git checkout -f new_feature #It switch to the other branch(new_feature), discarding all the current branch changes, in one single command.
使用git reset --hard 可以实现相同的目标,但如果您还想切换分支,则必须再执行一个命令:
git branch
*master
#Do some changes
git reset --hard
git checkout new_feature
我认为如果你留在同一个分支中,这两个命令是等价的......
【讨论】:
git checkout -f master
它的作用很简单:
如果您只是结帐,您的本地更改不会丢失。
如果您想覆盖您的更改,请添加 -f 标志以确保您的所有文件都恢复到“原始”状态。它还允许您在分支之间切换。
如果您正在处理当前分支,您可以简单地使用重置并省去切换分支的需要。
git reset --hard <last commitID>
重置有几个选项:软、混合和硬。 每个人做不同的事情。 更多信息:
https://www.kernel.org/pub/software/scm/git/docs/git-reset.html
【讨论】: