【问题标题】:Find Conflicting files while merging two git branches合并两个 git 分支时查找冲突文件
【发布时间】:2020-10-25 13:26:05
【问题描述】:

我有我的主分支“master”和两个派生分支“branch-a”和“branch-b”。当我尝试在'branch-b' github 桌面检查中合并'branch-a' 时: 并显示会有两个冲突的文件,这些可能是代码文件或 dll 或图像,我不知道: 当我点击“合并”时,它显示文件已自动合并。

我想知道哪些文件有冲突?

我的软件中有多个功能,我无法测试整个应用程序以找出哪个模块被此合并损坏。也许 git 已经采用了“branch-a”代码/dll/图像并丢弃了“branch-b”代码/dll/图像?我不知道。我只想要有冲突的文件的名称。大多数情况下发生在 dll/Libraries 中。

【问题讨论】:

  • 这个无法显示此信息的 GUI 工具是什么?别再用了,明显不好用。你确定冲突已经解决了吗?我敢打赌不是。使用命令行并询问 git status。
  • 它的“github 桌面”:desktop.github.com
  • 好吧,扔掉它。学习使用命令行。或者使用更好的 GUI。

标签: git git-merge git-diff git-merge-conflict github-desktop


【解决方案1】:

最快的方法是在文件中搜索冲突标记:"<<<<"">>>>"

如果你没有找到:git 可能选择了一种方法来组合这些会产生冲突。


假设您的提交命名如下:

* mmmm (HEAD -> branch-b) Merged branch 'branch-a' into branch-b
|\
| * aaaa (branch-a) commit on branch-a
* | bbbb commit on branch-b
...

您可以查看:

# diff with branch-a
git diff --name-status aaaa mmmm
# rather than typing explicit commit hashes, you can also type :
git diff --name-status HEAD^2 HEAD

# diff with branch-b
git diff --name-status bbbb mmmm
# same as :
git diff --name-status HEAD^1 HEAD

如果文件名出现在带有branch-a 的差异中,而不是带有branch-b 的差异中:
这意味着合并导致保留来自branch-b 的版本。

相反:如果名称出现在 branch-b 的差异中,但不在 branch-a 的差异中:
合并保留了来自branch-a 的版本。

如果一个名字出现在两个列表中:
这意味着git 结合了这两个内容来创建合并。


您可以将文件的范围缩小到目录或特定文件:

git diff --name-status HEAD^1 HEAD -- code/dll/
git diff --name-status HEAD^1 HEAD -- code/dll/image

【讨论】:

  • 好像不是代码冲突,代码冲突由>>>>和
【解决方案2】:

您可以继续点击“Merge branch-a into branch-b”,接下来 GitHub Desktop 将向您显示冲突文件,并允许您在实际提交合并之前解决冲突。您还可以选择中止合并,如下图所示:

【讨论】:

    猜你喜欢
    • 2015-10-02
    • 1970-01-01
    • 2019-08-03
    • 2020-04-18
    • 1970-01-01
    • 2018-03-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-10
    相关资源
    最近更新 更多