git:你的分支和'origin/master'有分歧 - 如何丢弃本地提交?

Ric*_*ard 45 git

我在git中有以下消息:

# Your branch and 'origin/master' have diverged,
# and have 3 and 8 different commits each, respectively.
#   (use "git pull" to merge the remote branch into yours)
Run Code Online (Sandbox Code Playgroud)

我想丢弃3个本地提交,并在origin/master处提取8个远程提交.

(合并将变得非常困难,一旦掌握最新,我宁愿再次进行3次本地提交.)

我怎样才能做到这一点?

SLa*_*aks 146

git fetch origin
git reset --hard origin/master
Run Code Online (Sandbox Code Playgroud)

  • 到目前为止我见过的最佳答案.对于使用此功能的任何人来说,任何非推送提交或本地更改都将在FYI中丢失. (14认同)
  • 你可以在没有 `--hard` 的情况下执行 `git reset origin/master` 以便工作目录更改不会丢失吗? (5认同)

jdr*_*mer 26

要在临时分支上保留旧提交,以备不时之需:

git branch temp
Run Code Online (Sandbox Code Playgroud)

然后切换到新的主人

git fetch origin
git reset --hard origin/master
Run Code Online (Sandbox Code Playgroud)

  • 是的,这是一项预防措施。它只是确保您将来需要时不会丢失提交。 (2认同)

man*_*lds 5

尝试这样做以破坏本地提交:

git reset --hard HEAD~4
Run Code Online (Sandbox Code Playgroud)