当解决方案是删除冲突的文件时,有没有办法让git rerere工作?

Bra*_*rad 8 git git-rerere

这是交易.master有一个文件file1.我分支,并删除分支中的该文件.同时,我修改了master上的file1.繁荣,冲突.

当我将我的分支合并到master时,解决方法是删除该文件.我试图使用git rerere能够多次执行相同的分辨率,但正如您在下面看到的那样,当您删除文件时,它不会记录分辨率.

我没有具体找到这方面的文件,这只是一个限制rerere吗?

 |system| brad-macbook-air in ~/tmp
± bb+ih |master ?| ? touch file1.txt

 |system| brad-macbook-air in ~/tmp
± bb+ih |master ?| ? git add . && git commit -m 'File1'
[master (root-commit) 95a807e] File1
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 file1.txt

 |system| brad-macbook-air in ~/tmp
± bb+ih |master ?| ? git checkout -b delete_file_1
Switched to a new branch 'delete_file_1'

 |system| brad-macbook-air in ~/tmp
± bb+ih |delete_file_1 ?| ? git rm file1.txt
rm 'file1.txt'

 |system| brad-macbook-air in ~/tmp
± bb+ih |delete_file_1 ?| ? git commit -m 'rm file1'
[delete_file_1 83d1a57] rm file1
 1 file changed, 0 insertions(+), 0 deletions(-)
 delete mode 100644 file1.txt

 |system| brad-macbook-air in ~/tmp
± bb+ih |delete_file_1 ?| ? git checkout master
Switched to branch 'master'

 |system| brad-macbook-air in ~/tmp
± bb+ih |master ?| ? echo 'hello' > file1.txt

 |system| brad-macbook-air in ~/tmp
± bb+ih |master ?| ? git commit -am 'update file1'
[master 16f6541] update file1
 1 file changed, 1 insertion(+)

 |system| brad-macbook-air in ~/tmp
± bb+ih |master ?| ? git merge delete_file_1 
CONFLICT (modify/delete): file1.txt deleted in delete_file_1 and modified in HEAD. Version HEAD of file1.txt left in tree.
Automatic merge failed; fix conflicts and then commit the result.

 |system| brad-macbook-air in ~/tmp
± bb+ih |master ?| ? git rm file1.txt
file1.txt: needs merge
rm 'file1.txt'

 |system| brad-macbook-air in ~/tmp
± bb+ih |master ?| ? git commit --no-edit
[master 4791204] Merge branch 'delete_file_1'
Run Code Online (Sandbox Code Playgroud)

在这里,我们应该看到类似"file1.txt的记录分辨率",但我们没有.为了确保它没有记录我们的分辨率,我们继续进行并再次进行完全相同的合并:

 |system| brad-macbook-air in ~/tmp
± bb+ih |master ?| ? git reset head^
Unstaged changes after reset:
D   file1.txt

 |system| brad-macbook-air in ~/tmp
± bb+ih |master ?| ? git co .

 |system| brad-macbook-air in ~/tmp
± bb+ih |master ?| ? git merge delete_file_1 
CONFLICT (modify/delete): file1.txt deleted in delete_file_1 and modified in HEAD. Version HEAD of file1.txt left in tree.
Automatic merge failed; fix conflicts and then commit the result.
Run Code Online (Sandbox Code Playgroud)

在这里,您可以看到git rerere不记得冲突解决方案(实际上错误地将文件保留在树中).

fun*_*nda 7

就目前的情况而言,No. rerere 尝试根据每个冲突文件中的大块记录以前的解决方案。在删除的情况下,rerere 仅将其视为没有要解决的大块。

  • 它所做的只是打开文件并搜索包含这些字符“<”、“>”、“=”、“|”的大块头 . 因此,不。说它适用于二进制文件是不对的。 (2认同)