Git 合并冲突却没有进行任何修改

20

我克隆了一个仓库,几个小时后进行了'git pull'。然而出现了合并冲突,我不明白为什么会出现这种情况,因为我没有在克隆的仓库中做任何更改。

git status
On branch master
Your branch is up-to-date with 'origin/master'.

nothing to commit, working directory clean


git pull
remote: Counting objects: 6211, done.
remote: Compressing objects: 100% (849/849), done.
remote: Total 3237 (delta 2756), reused 2846 (delta 2371)
Receiving objects: 100% (3237/3237), 865.51 KiB | 152.00 KiB/s, done.
Resolving deltas: 100% (2756/2756), completed with 867 local objects.
From git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next
 + 76c2c6d...4d046e9 master     -> origin/master  (forced update)
 + 1e13928...003e6ba akpm       -> origin/akpm  (forced update)
 + 9d1d11d...8bcfe39 akpm-base  -> origin/akpm-base  (forced update)
   37504a3b..8ba4caf stable     -> origin/stable
 * [new tag]         next-20140918 -> next-20140918
Performing inexact rename detection: 100% (318500/318500), done.
Auto-merging tools/testing/selftests/rcutorture/doc/TREE_RCU-kconfig.txt
CONFLICT (content): Merge conflict in tools/testing/selftests/rcutorture/doc/TREE_RCU-kconfig.txt
Auto-merging tools/testing/selftests/rcutorture/configs/rcu/TREE03
Auto-merging localversion-next
CONFLICT (add/add): Merge conflict in localversion-next
Auto-merging kernel/rcu/tree.c
CONFLICT (content): Merge conflict in kernel/rcu/tree.c
Auto-merging drivers/target/target_core_fabric_configfs.c
CONFLICT (content): Merge conflict in drivers/target/target_core_fabric_configfs.c
Auto-merging drivers/target/iscsi/iscsi_target_util.c
Auto-merging drivers/hwmon/Kconfig
Auto-merging drivers/gpu/drm/i915/intel_ringbuffer.c
Auto-merging drivers/gpu/drm/i915/intel_drv.h
Auto-merging drivers/gpu/drm/i915/intel_dp.c
Auto-merging drivers/gpu/drm/i915/intel_display.c
Auto-merging drivers/gpu/drm/i915/i915_gem.c
CONFLICT (content): Merge conflict in drivers/gpu/drm/i915/i915_gem.c
Auto-merging drivers/clk/rockchip/clk-rk3288.c
Auto-merging arch/mips/include/asm/topology.h
Auto-merging arch/m68k/coldfire/m54xx.c
Auto-merging Next/quilt-import.log
CONFLICT (add/add): Merge conflict in Next/quilt-import.log
Auto-merging Next/merge.log
CONFLICT (add/add): Merge conflict in Next/merge.log
Auto-merging Next/SHA1s
CONFLICT (add/add): Merge conflict in Next/SHA1s
warning: inexact rename detection was skipped due to too many files.
warning: you may want to set your merge.renamelimit variable to at least 5040 and retry the command.
Automatic merge failed; fix conflicts and then commit the result.

git status
On branch master
Your branch and 'origin/master' have diverged,
and have 236 and 347 different commits each, respectively.
  (use "git pull" to merge the remote branch into yours)

You have unmerged paths.
  (fix conflicts and run "git commit")

Changes to be committed:
    ...

Unmerged paths:
  (use "git add <file>..." to mark resolution)

    both added:      Next/SHA1s
    both added:      Next/merge.log
    both added:      Next/quilt-import.log
    both modified:   drivers/gpu/drm/i915/i915_gem.c
    both modified:   drivers/target/target_core_fabric_configfs.c
    both modified:   kernel/rcu/tree.c
    both added:      localversion-next
    both modified:   tools/testing/selftests/rcutorture/doc/TREE_RCU-kconfig.txt

4
git status 显示什么? - Andrew C
3
您克隆的存储库是否为公共的?如果是公共的,请发布链接以便此处的人们进行调查。具有写入权限的任何人可能已经(可怕!)重写了历史记录。 - jub0bs
这是Linux-next,我今天会再试一次,然后发布结果。 - René Kolařík
也许有人在你的源代码库中进行了变基操作? - palazzo train
3个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
18

首先需要注意的是,我每天都会使用以下命令:

当我不需要进行任何实际合并时,我会使用 git merge --ff-only。我知道也可以使用 git pull --ff-only,但更常用的是 git pull --rebase,因为它不会创建任何合并提交,而是在上游基础之上重播我本地的更改(如果有)。然而,我无法解释其原理,因为我不了解关于linux-next的规则。

只有在分支发生分叉的情况下才会出现合并冲突。如果你的分支没有被更改,那么就应该可以进行干净的快速向前合并。根据你的描述,唯一符合情况的解释是远程不再包含你的提交历史记录,这意味着上游已经重新编写了历史记录。在某些工作流程中,发布的分支仅是一组更大变更集合的最新提交的指针,这种情况非常常见。然而,我对于linux-next没有具体的信息。

危险区:当出现这种情况时,你可以使用 git fetch 来获取上游数据,然后使用 git reset --hard origin/master 来更新你的分支引用(将 originmaster 替换为实际的远程和分支名称)。但是请确保没有任何更改需要保存,因为这是一种破坏性操作。


1
当您不希望进行实际合并时,使用 [git merge --ff-only] 是什么意思? - emboel

3
除了Pavel的评论之外,还要确保你没有任何未提交到上游的修改。如果是这种情况,当你看到你没有需要提交的文件(也许是睡眠不足),并且它想要开始合并时,你可能会有点困惑。

0
我为了解决这个问题所做的是暂时切换到另一个分支,删除(本地的)带有合并冲突的分支,然后再次获取该分支。

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