我使用我从主分支机构创建的分支机构100%工作。既然一位同事已经回到原点/主人那里,我试图将这些变化推到我的个人分支中。当我做一个'git checkout master'后跟'git status'时,我会得到以下结果:
# Your branch is ahead of 'origin/master' by 2 commits.
我的承诺如何通过2次提交从未提交过?什么是找出它们是什么提交并从根本上撤消它们的最佳方法?我不希望将任何东西推回原点/主人,因为这可能会导致未知的冲突。
答案 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以查看哪些提交实际上有所不同。