Git:我怎么不承诺在原点/主人之前

时间:2009-05-11 23:05:42

标签: git version-control

我使用我从主分支机构创建的分支机构100%工作。既然一位同事已经回到原点/主人那里,我试图将这些变化推到我的个人分支中。当我做一个'git checkout master'后跟'git status'时,我会得到以下结果:

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

我的承诺如何通过2次提交从未提交过?什么是找出它们是什么提交并从根本上撤消它们的最佳方法?我不希望将任何东西推回原点/主人,因为这可能会导致未知的冲突。

4 个答案:

答案 0 :(得分:35)

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

git log origin/master..

将它们吹走,让你的头像和原点/主人一样:

git reset --hard origin/master

您是如何将更改推送到自己的存储库的?我注意到你提到“推”......原产地是中央回购?你同事的回购?我怀疑你真正想做的是直接或从中央临时点拉你的同事的变化,而不是推动。可能只是您在origin / master之前的2次更改实际上是您的同事的更改,但是origin / master tracking分支是陈旧的。

答案 1 :(得分:4)

您正在使用master的一个分支,并且您已经进行了两次不在origin/master中的提交。

消息# 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

答案 2 :(得分:0)

你在 工作的分支上有没有git rebase

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

答案 3 :(得分:0)

您可能需要确保您的原始版本/主版本与主控版的repo版本保持同步。尝试运行:

git fetch origin master

因此您的本地origin / master与repo的master相同。然后当你运行

git pull origin master

您应该准确显示当地主人提前多少次提交。之后,您可以运行araqnid's command以查看哪些提交实际上有所不同。

相关问题