Git:我没有提交的分支如何领先于origin/master

20

我完全使用了从主分支创建的分支。现在,我的同事已经将更改推回到origin/master,我尝试将这些更改推送到我的个人分支。当我执行'git checkout master'然后执行'git status'时,我得到以下结果:

# Your branch is ahead of 'origin/master' by 2 commits.

我从未提交过到的分支如何领先2个提交?找出这些提交并基本上撤消它们的最佳方法是什么? 我不希望将任何内容推回 origin/master ,因为这可能会引起未知的冲突。


对于 Git 这样一个简单的工具来说,这是最令人困惑的部分。我和你有完全相同的问题。我从不提交到我的主分支。我总是创建新分支并进行更改。当我执行 'git pull origin master' 时,它会显示落后了 200 次提交。为什么?我从未碰过它。我希望他们能澄清这一点。 - Jeff
4个回答

35

要查看在HEAD中而不在origin/master中的提交:

git log origin/master..

为了将它们消除并使您的HEAD与origin/master相同:

git reset --hard origin/master
你如何将更改推送到自己的存储库?我注意到你提到了“push”......原点是一个中央存储库吗?你同事的存储库?我怀疑你实际想要做的是直接从中央暂存点或间接地拉取你同事的更改,而不是推送。可能只是因为你领先于origin/master的2个更改实际上是你同事的更改,但是origin/master跟踪分支已经过时。

谢谢araqnid。只是好奇,这种情况下git log origin/master..做什么? - anon
3
使用涉及到一连串修订版本的git命令时,A..B是“B ^A”或者“B --not A”的简写。“A..”本身是“HEAD --not A”的简写。git会加载版本B,然后沿着版本图向后遍历,直到遇到从A(通常是A自身)可达的提交为止。在版本历史记录是一条线的简单情况下,这将简化为显示从A到B(包括B)之后的提交。 - araqnid
我经常看到关于git问题的答案,只是说“只需输入这个”,而没有解释所有小标志和选项的含义。感谢您写下那个解释性的评论。 - Tyler

4
你正在一个名为master的分支上工作,并且已经提交了两个不在origin/master中的commit。
消息“# Your branch is ahead of 'origin/master' by 2 commits.” 的意思是:
# Your branch 'mybranch' has two commits not in 'origin/master'

假设你使用 git,希望像 SVN 一样拥有版本号。你的分支包含了提交记录 1、2、3、4、5,但是 origin/master 只有 1、2、3 三个提交记录。因此,版本历史看起来可能像下面这个糟糕的 ASCII 图表。
your branch                                   -- [commit 4]--[commit 5]
                                             /                    /\ HEAD
master --[commit 1]--[commit 2]--[commit 3]-/
                                       /\ origin/master

为了在日志中显示最后两个提交,您可以执行以下操作..
git log HEAD..HEAD~2

0

你可能需要确保你的 origin/master 分支与你的 repo 版本的 master 分支是最新的。尝试运行以下命令:

git fetch origin master

所以你的本地 origin/master 分支与仓库的 master 分支相同。然后当你运行时

git pull origin master

你应该准确地显示本地主分支超前了多少次提交。之后,你可以运行araqnid的命令来查看哪些提交实际上是不同的。


0

你在正在工作的分支上做过任何git rebase吗?

如果没有,你可以尝试复制你的分支(git checkout -b testrebase),然后执行git rebase master来看看是否有效。这将解开相对于主分支所做的所有提交,然后尝试将它们重新应用回去(基本上是使历史记录有意义)。如果不起作用,只需删除testrebase即可。


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