119

我在 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)

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

(合并太难了,我宁愿在 master 更新后再次进行 3 次本地提交。)

我怎样才能做到这一点?

4

6 回答 6

316
git fetch origin
git reset --hard origin/master
于 2013-11-08T17:22:38.337 回答
40

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

git branch temp

然后切换到新的master

git fetch origin
git reset --hard origin/master
于 2013-11-08T20:28:13.243 回答
9

尝试这样做以消除您的本地提交:

git reset --hard HEAD~4
于 2013-11-08T17:23:50.553 回答
4

要擦除最新的本地提交,请使用以下命令:

git reset HEAD^

这将使标头恢复到提交之前的状态,并允许您git pull从 master. 在从远程存储库中提取之前,请确保将所有更改保存在其他地方(本地)。

要能够拉而不冲突使用git stash,然后git pull

于 2017-03-16T21:25:44.393 回答
4

如果硬重置没有为您解决问题并且您不想进行合并,您可以通过删除本地分支并重新下载原始分支来丢弃本地不需要的更改:

git branch -D <local branch>
git checkout -b <branch name> origin/<branch name>

使用main为例:

git branch -D main
git checkout -b main origin/main
于 2016-11-14T13:36:03.013 回答
4

作为合并的替代方法,您可以使用以下命令将功能分支重新定位到主分支:

git checkout feature
git rebase master
于 2015-10-21T14:02:50.683 回答