自动合并当“混帐拉”后,你会得到消息:查看文件由混帐
Merge made by the 'recursive' strategy.
你怎么能知道哪些人在冲突中的文件?我希望能够确认如何更改我的文件所做的git ...
自动合并当“混帐拉”后,你会得到消息:查看文件由混帐
Merge made by the 'recursive' strategy.
你怎么能知道哪些人在冲突中的文件?我希望能够确认如何更改我的文件所做的git ...
小心单词“冲突”:如果git merge
步骤git pull
自动完成,或者有没有任何冲突 ,或者你有git rerere
打开,并且git re使用re有线re解决冲突的解决方案。我嫌疑人你的意思是“我如何看到git从合并的origin/branch
部分带来什么变化”。
也就是说,假设在git pull
的git fetch
步骤之后提交图表看起来像这样。这里每一个字母代表一个承诺,我已经假设你自从上次你和你的上游是在同步做两次提交(A
和B
),和他们做了两次提交(C
和D
):
A - B <-- branch
/
... - o - o
\
C - D <-- origin/branch
此时您的git pull
完成了其后半部分git merge
,以产生新的合并提交。让我们把这种M
:
A - B
/ \
... - o - o M <-- branch
\ /
C - D <-- origin/branch
想必你知道你做什么样的变化,你希望看到什么样的变化M
了,当B
(最近的更改)进行比较。
为了找到答案,您首先找到提交B
的SHA-1 ID,然后您可以简单地运行git diff <id-of-B> branch
。 (名字branch
认定犯M
容易,所以它的B
,你需要找到,问git的这种差异。)
实际上,有找到B
的ID的简单方法。 B
始终是M
的“第一位父母”。像M
这样的合并提交至少有两个父提交,并且第一个在您(或git pull
)运行git merge <whatever>
之前,一个是您的分支的小费。 (第二父提交D
这里,因为这是你合并-in。)的有Git中一个特殊的语法参照第一父母,实际上是两个这样的语法,但允许使用^
语法现在:
$ git diff branch^ branch
名称branch
标识了一个特定的提交,即M
。每个^
在之后加上,标识特定提交的东西意味着“现在转到该东西的第一个父代”,因此branch^
标识提交B
。如果您想查找提交A
,请添加另一个^
以获取branch^^
。要找到最右边的o
提交,您可以编写branch^^^
,依此类推。
您可以多压缩一下这个表示法:branch~3
表示branch^^^
,即三个后缀^
s; branch~5
表示branch^^^^^
等等。
如果你想找到的M
的秒母公司,即犯上面的图中D
?您可以在^
之后添加一个数字,以表示,其中父级:branch^2
是提交D
。 (如果你问branch^3
你得到一个错误的承诺M
只有两个家长,而不是三个。梅杰斯可以有两个以上的父母承诺,但这些都是不寻常的。)
如果你想找到犯C
,您可以先使用branch^2
找到D
,然后再添加^
:branch^2^
标识提交C
。由于C
的父代是最右边的o
提交,因此branch^2^^
标识提交o
,就像branch^^^
或branch~3
一样。
(可以使用git rev-parse
,看到这一切,可打印出任何的git对象的全部40个字符的SHA-1 ID鉴于解析为对象的名称。只要运行git rev-parse <name>
,这是一个只读的操作,所以你可以在一个窗口中使用它,例如在另一个窗口中查看图形。另外,请看the gitrevisions
documentation。)
该信息不会被记录在任何地方。但是,您可以检出旧的提交并重新进行合并,以查看哪些文件会发生冲突。 – Nayuki
我提高了这个问题,因为你的用户名太棒了。 –