Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 从上游更新合并冲突_Git_Github_Branching And Merging - Fatal编程技术网

Git 从上游更新合并冲突

Git 从上游更新合并冲突,git,github,branching-and-merging,Git,Github,Branching And Merging,我正试图在github项目上开始使用git。(我多年来一直在使用CVS、SVN和hg;git很难让我动脑)。我正在尽可能精确地遵循指示,但我无法让它正常工作 我克隆了我的分叉项目: git clone git@github.com:davidgiven/linux-allwinner.git 根据建议,我添加了一个“上游”遥控器,用于跟踪我的遥控器所派生的项目: git remote add upstream https://github.com/amery/linux-allwinner.g

我正试图在github项目上开始使用git。(我多年来一直在使用CVS、SVN和hg;git很难让我动脑)。我正在尽可能精确地遵循指示,但我无法让它正常工作

我克隆了我的分叉项目:

git clone git@github.com:davidgiven/linux-allwinner.git
根据建议,我添加了一个“上游”遥控器,用于跟踪我的遥控器所派生的项目:

git remote add upstream https://github.com/amery/linux-allwinner.git
我从中得到:

git fetch upstream
这一切都很好。但是,自从我开始这个项目已经有一个星期左右了,上游公司一直在做出改变。所以我想把这些变化拉进来。我目前在正确的分支——allwinner-v3.0-android-v2——因此我从上游合并到我的分支:

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 upstream/allwinner-v3.0-android-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
这将放弃任何本地更改,并使当前头的提交无法访问!


以上假设您将(强制)将分支的新重置状态推送到远程存储库,否则当您尝试从
提取时,将再次遇到冲突

git push origin +allwinner-v3.0-android-v2
如果您已经在本地提交了自己的请求,那么您必须在上游分支上重新设置(或选择)提交的基础,然后推送到源代码。这样,您就可以像上游一样重新编写本地历史记录,并在顶部应用您的更改,即:

git rebase --onto upstream/branch \
  last-original-upstream-commit-before-yours \
  your-branch

show branch
输出意味着
upstream
HEAD
自它们的共同祖先(假设这是完整的输出)以来,各自添加了两个提交。(另请参见:)如果您自己没有做出任何承诺,这确实意味着上游推动了重新基准(或其他改变历史的事情)。既然你没有做出任何承诺,奈特的回答正是你想要的


值得一提的是,我也喜欢git日志--单线--图形--装饰--远程--分支。您将得到一个包含所有分支和远程的ASCII图,这样您就可以直观地看到在哪里发生的事情。

听起来像是您希望重新设置基础而不是合并。
git show branch HEAD upstream/allwinner-v3.0-android-v2
可能会显示一些有趣的内容。这是
show branch
的完整输出吗?我希望它以一行开头,结尾是
++
是的,没有
++
,我已经试过了。不幸的是,它没有帮助。。。现在,
git push
失败,告诉我需要先
git pull
;但是,
git pull
产生的合并错误与我之前遇到的相同。这就是我所期望的;我的理解是,
git reset
将当前分支更改为指定的分支,因此我现在只需在本地签出一份
上游/allwinner-v3.0-android-v2
。但是由于冲突发生在
origin/..
upstream/..
之间,所以唯一改变的是冲突发生的时间。@DavidGiven:git push to where?它将失败,因为你的推动不再是快进。您在问题中提到您没有做出任何承诺,因此可能需要一次强制推送?在
rebase
文档中有一个关于从上游rebase恢复的完整部分,如果您希望得到真正彻底的治疗,这可能会有所帮助:另外,如果您在回答中添加
push-f
,我会接受。非常感谢。@Chris:是的,
+branchname
转化为强制推送。当时(2012年)
gitpush
不支持
-f
/
-force
选项,后来添加了该选项。