3

我想恢复当前分支中所有未提交的更改说' master'。在以下情况中最好使用的是什么?为什么?:

  1. git checkout -f master
  2. git reset --hard <last commitID>
4

2 回答 2

3

他们都做你需要做的:丢弃所有未提交的更改,但 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

我认为如果你留在同一个分支中,这两个命令是等价的......

于 2013-08-15T09:01:01.413 回答
1
git checkout -f master

它的作用非常简单:

如果您只是结帐,您的本地更改将不会丢失。

如果要覆盖更改,请添加 -f 标志以确保所有文件都恢复到“原始”状态。它还允许您在分支之间切换。

如果您正在处理当前分支,您可以简单地使用重置并省去切换分支的需要。

git reset --hard <last commitID>

重置有几个选项:软,混合和硬。每个人做不同的事情。更多信息:

https://www.kernel.org/pub/software/scm/git/docs/git-reset.html

于 2013-08-15T10:42:27.943 回答