git pull总是导致合并的结果

6

我有一个问题,每当我在生产服务器上运行git pull时,都会导致合并。

如果我运行git status,我会得到以下输出:

$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 351 commits.
#   (use "git push" to publish your local commits)
#
nothing to commit, working directory clean

好的,那么现在有351个本地提交。但是git diff没有显示任何本地更改:
$ git diff origin/master..HEAD
(no output)

如果我使用git log origin/master..HEAD,我只会看到类似于“合并****分支的主分支”的消息。
有没有什么办法可以摆脱那些看起来毫无意义的351个本地提交?

你当前的分支名称是什么? - RomanPerekhrest
这只是一个猜测。但是你之前是否进行过一些历史重写的操作?比如rebase、reset或者其他任何可以重写历史并将其推送到服务器上的操作? - ckruczek
4个回答

6
首先,以防万一,让我们创建当前分支的备份:
git branch master-bak

如果git diff origin/master..HEAD返回空输出,那么意味着你当前的分支与origin/master具有相同的内容。此时,你可以将本地分支重置为与origin/master相同的状态:
git reset origin/master

1
显然,你不是独自工作的,所以肯定有人进行了强制推送(你本地仓库与远程仓库历史记录不同),此后其他人应该执行 git reset --hard origin/master,以保持与 origin/master 相同的历史记录。

0

我猜测在你上次拉取远程主分支后,可能是因为原始主分支有一些回滚操作。如果你想与远程主分支保持最新,只需删除本地主分支并创建新的主分支即可。

git checkout another branch
git branch -D master
git checkout -b master
git pull origin/master 

0

当git status显示你的分支比'origin/master'多了351个提交时,它实际上确实指的是origin/master。 简单来说,这意味着在你的repo中有一个名为origin/master的指针,指向该远程分支的HEAD提交,而你的主分支超前于此提交。因此,当你运行git pull时,你的本地更改也将被合并。在这种情况下,你需要在合并后检出一个新的分支或提交。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接