【问题标题】:git checkout -f master VS git resetgit checkout -f master VS git reset
【发布时间】:2013-08-15 08:18:46
【问题描述】:

我想恢复当前分支中所有未提交的更改,例如“master”。以下哪个最好用,为什么??:

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

【问题讨论】:

标签: git git-checkout git-reset


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:
    git checkout -f master
    

    它的作用很简单:

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

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

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

    git reset --hard <last commitID>
    

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-06
      • 2016-02-24
      • 2018-06-25
      • 2014-09-03
      • 1970-01-01
      • 2011-04-08
      • 1970-01-01
      相关资源
      最近更新 更多