合并两个分支时,合并失败很多次,我将单独解决差异.
一些成功合并的文件,我可以看到它的差异
git diff --staged <merged-file>
Run Code Online (Sandbox Code Playgroud)
问题是对于未合并路径,当我尝试检查引入的差异时,我什么也看不见.
git diff <unmerged-file>
Run Code Online (Sandbox Code Playgroud)
但是当我尝试使用远程主分支进行区分时,会出现差异.
git diff origin/master <unmerged-file>
Run Code Online (Sandbox Code Playgroud)
为什么会这样?> 合并操作是否更新了我的本地HEAD或其他什么?
此外,当我git add用来标记分辨率时,他们永远不会进入临时区域,这是为什么git diff没有显示任何东西?
Dav*_*ave 12
在合并期间,冲突的文件处于特殊状态.存在多个具有相同文件名和不同blob id的条目.这些通常是三个blob(用于三向合并)或两个blob(用于简单合并).
尝试合并..
$ git merge origin/otherbranch
Merge remote-tracking branch 'origin/otherbranch' into mybranch
Conflicts:
somefile.txt
Run Code Online (Sandbox Code Playgroud)
查看需要合并的文件
$ git diff --name-status --diff-filter=U
U somefile.txt
Run Code Online (Sandbox Code Playgroud)
要么
$ git update-index --refresh
somefile.txt: needs merge
Run Code Online (Sandbox Code Playgroud)
查看与要合并的文件相关的blob;
$ git ls-files -s somefile.txt
100644 9a0579524e0c7ba9fc9ae18badadaddcad2d598f **1** somefile.txt
100644 1bcff16b6de5ed304a06e643070e40787db1ead8 **2** somefile.txt
100644 6e52271b22f6a6d1150619433551e0fa9094b108 **3** somefile.txt
Run Code Online (Sandbox Code Playgroud)
根据git-merge手册页.1 =共同的祖先,2 = HEAD(我们的)和3 = MERGE_HEAD(他们的)
显示差异
$ git diff 9a0579524e0c7ba9fc9ae18badadaddcad2d598f 6e52271b22f6a6d1150619433551e0fa9094b108
< some differences >
Run Code Online (Sandbox Code Playgroud)
检索共同的祖先..
$ git cat-file blob 9a0579524e0c7ba9fc9ae18badadaddcad2d598f
来自HEAD的结帐版本
$ git checkout --ours somefile.txt
Run Code Online (Sandbox Code Playgroud)
来自MERGE_HEAD的结账版本
$ git checkout --theirs somefile.txt
Run Code Online (Sandbox Code Playgroud)
重置为'合并'已更改
$ git checkout -m somefile.txt
Run Code Online (Sandbox Code Playgroud)
我能够看到冲突文件更改的唯一方法是:
git diff --merge <unmerged-file>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4070 次 |
| 最近记录: |