【问题标题】:what are "automerged" files in git, and how do you list them all?什么是 git 中的“自动合并”文件,你如何列出它们?
【发布时间】:2012-12-26 20:35:02
【问题描述】:

我在一个分支中运行了git merge master --no-commit,给出的唯一输出是:

Auto-merging path/to/file
Automatic Merge went well; stopped before committing as requested

但是,git diff HEAD --name-status 显示大约有 15 个文件被修改(以“M”为前缀)和 3 个文件被添加(以“A”为前缀)。合并中的 所有 修改文件是否被视为“自动合并”?那么这个特定文件有什么特别之处,它会打印为“自动合并”而不是其他文件?


更多信息(这是在我提交合并之前):

$ git log --oneline --graph --decorate  --all
* ae3f058 (master) synced code from another source.
| * 3bd4147 (HEAD, branchA) blah blah blah
| * f6513f6 random message
| * fcbe65e more messages from commit history
| * 6bc99e2 I like green eggs and ham
|/
| * 1824723 (branchB) This is some other, unrelated branch.
|/
* 5a98fac some stuff right before branching
* 40b05f1 initial commit.

【问题讨论】:

    标签: git git-branch git-merge


    【解决方案1】:

    列出该文件以及仅该文件的原因是因为该文件是唯一在两个分支中都已更改的文件。对于所有其他文件,只是简单地选择了一个或另一个(“快进”),并且从算法意义上从未真正合并。

    我是这样想的(这是在提交合并之前完成的):

    $ git merge-base HEAD MERGE_HEAD
    5a12345
    $ git diff HEAD 5a12345 --name-only > files_changed_in_HEAD
    $ git diff MERGE_HEAD 5a12345 --name-only > files_changed_in_MERGE_HEAD
    $ comm -12 files_changed_in_HEAD files_changed_in_MERGE_HEAD > files_changed_in_both
    $ cat files_changed_in_both
    path/to/file
    $ 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-12
      • 2021-12-19
      • 1970-01-01
      • 1970-01-01
      • 2018-01-25
      • 1970-01-01
      • 1970-01-01
      • 2018-09-10
      相关资源
      最近更新 更多