English 中文(简体)
从上游更新的合并冲突
原标题:Merge conflicts updating from upstream
  • 时间:2012-05-27 11:11:23
  •  标签:
  • git
  • github

我试图从一个 Gittub 项目开始。 (我已经使用 CVS、 SVN 和 hg 多年了; 很难让我头脑清醒 ) 。 我尽可能精确地按照指示行事,根本无法让它正常运转。

我克隆我的叉子项目:

git clone [email protected]:davidgiven/linux-allwinner.git

根据建议,我增加一个上游偏僻地带,跟踪我的项目,因为我的项目被推卸了:

git remote add upstream https://github.com/amery/linux-allwinner.git

我从中取出:

git fetch upstream

这一切都很好。但是,自从我提前提出这个项目以来,已经一周左右了, 上游一直在变化。所以我想把这些变化拉进来。我现在在正确的分支里-- 胜者- 胜利者- 3,0和机器人- 2-- 所以我从上游合并到我的分支里:

git merge upstream/allwinner-v3.0-android-v2

...我得到合并冲突。

CONFLICT (add/add): Merge conflict in arch/arm/mach-sun5i/pm/standby/common.h
CONFLICT (add/add): Merge conflict in arch/arm/mach-sun5i/pm/standby/Makefile
CONFLICT (add/add): Merge conflict in arch/arm/mach-sun5i/pm/standby.S
CONFLICT (add/add): Merge conflict in arch/arm/mach-sun5i/pm/Makefile
[etc]

现在,我检查了“一无所有 ” ; 我还没有开始工作, 我的项目自从我回避后就完全没有动静了。 因此不应该有任何冲突。 但是有些冲突是不可能发生的。 但是有些冲突正在发生, 发生了什么, 我该怎么解决?

<强> 更新:

git show -branch HEAD上游/Allwinner-v3.0和roid-v2 显示了这一点,我不得不说,我一个字也听不懂:

! [HEAD] arm: sun3i: add getioaddr macro
 ! [upstream/allwinner-v3.0-android-v2] arm: sun3i: updated irq handling and machine_desc to 3.0
--
 + [upstream/allwinner-v3.0-android-v2] arm: sun3i: updated irq handling and machine_desc to 3.0
 + [upstream/allwinner-v3.0-android-v2^] arm: sunxi: renable early_printk in all _defconfig except crane s
+  [HEAD] arm: sun3i: add getioaddr macro
+  [HEAD^] arm: sun3i: add dummy machine type
最佳回答

可能是,上游已经重写了历史(重写基础、修正、...) — — 他们不应该这样做,但你永远不会知道。

既然你说你对本地没有任何改变或承诺,你应该通过重新设置分支,将仓库恢复到一个干净的状态:

git reset --hard upstream/allwinner-v3.0-android-v2

(<强> 这将丢弃任何本地更改, 使当前 HEAD 的承诺无法到达! )


以上假设您( 强制) 将把您分支的新重置状态推到远程仓库, 否则您在试图从 < code> 源代码 调出时将再次遇到冲突 。

git push origin +allwinner-v3.0-android-v2

如果你已经在当地作出承诺,你就必须在上游分支的顶端重新立足(或摘樱桃),然后推向源头。这样,你就会像在上游所做的那样重新写写你的地方历史,在上游应用你的变化,即:

git rebase --onto upstream/branch 
  last-original-upstream-commit-before-yours 
  your-branch
问题回答

show-branch 输出意味着 upstream >自其共同祖先以来,每增加两项承诺(假设是全部输出)。 (另见: < href="http://www.gitguys.com/plicates/git-show-branch-to-see-branches-to-branches-to-to-the-commits/"rel=nofolpolations/"http://www.gitguys.com/topics/git-show-branch-to-branches-and-the-commits/ )如果你自己做出任何承诺,意味着上游推动了一条基准(或改变历史的其他东西)。由于你没有做出任何承诺,Knittl的答案就是你想要的。

对于它的价值,我还喜欢 git log -- oneline -- graph -- decorate -- remotes -- branches 。你会得到一个包含所有分支和远程的 ASCII 图形, 这样你就能想象到发生在哪里。





相关问题
git confusion - cloning a repo is returning a past version

Im having some confusion with my git usage. I cloned a repo from one comp to the other, and the new clone is the state of the original that was active some time ago. So its cloning a past version. ...

Appropriate strategy for tagging and hotfixing with git

I was wondering if the strategy I m using for tagging and hotfixing tags (which then I use for deploying rails applications) with git is appropriate. For tagging I just tag a commit of the master ...

Tips on upgrading CVS to git/hg?

We still use CVS, I use git and hg for my personal use though I m still a novice at both, but I realize they re much more modern and better, faster, distributed, etc. It s just everyone is so ...

Using Git in a TFS shop

Using Git at home has spoiled me - I now find using TFS at work to be a bit of a drag and want to explore the possibility of using Git locally and syncing somehow with TFS. I figure there are a few ...