我正在尝试使用git merge-file
在两个分支(current
和other
)之间进行3种方式的合并,这些分支很早以前就逐个文件了。我之所以选择这种方法,是因为进行git merge
会导致太多冲突,并使其成为一场噩梦,而逐个文件地进行操作并不会破坏太多,并且在我进行测试时不会更新所有测试更改会更容易。
然后的想法是使用此脚本,该脚本使用分支名称,文件名并使用当前分支上文件的最新版本,分歧点的版本和最后一次提交的版本执行合并。另一个分支。
问题在于,此命令不是仅突出显示不同的部分,而是简单地说整个文件发散了,即使实际上只有几行不同。我在这里做什么错了?
#!/bin/bash
common_sha=$(git merge-base HEAD $1)
git show $common_sha:$2 > common
git show $1:$2 > theirs
git merge-file --diff3 $2 common theirs
rm common
rm theirs
以下是所使用脚本的示例:
$ git branch -a
* current_branch
master
other_branch
$ my_merge.sh other_branch file.txt
这是它使用的文件
common version of file.txt
line 1
line 2
line 3
line 4
line 5
current branch's version of file.txt
line 1
line 2.2
line 3
line 4.1
line 6
other branch's version of file.txt
line 1
line 2.1
line 2.2
line 3
line 4
line 5
预期结果与实际结果
expected result after running the script
line 1
<<<<<<< file.txt
line 2.2
||||||| common
line 2
=======
line 2.1
line 2.2
>>>>>>> theirs
line 3
line 4.1
line 6
actual result
<<<<<<< file.txt
line 1
line 2.2
line 3
line 4.1
line 6
||||||| common
line 1
line 2
line 3
line 4
line 5
=======
line 1
line 2.1
line 2.2
line 3
line 4
line 5
>>>>>>> theirs
答案 0 :(得分:2)
检查文件:
if(gettingupspeech.equals("5 more minutes Mum""five more minutes Mum")){
resultText.setText("Correct! Press Next to move on.");
}else{
resultText.setText("That sounded off, please try again.");
}
在文件上使用文件(git show HEAD:a-file > a.txt
git show $1:a-file > b.txt # replace $1 for the revision you are playing with
git show $( git merge-base HEAD $1 ):a-file > c.txt
,并检查每个文件的值是什么,以查看它们是否都是一种格式(CRLF或LF),或者它们是否在CRLF和LF之间切换...或者您可以打开所有这3个文件都可以在一个体面的文本编辑器上显示出来(unix / windows)。如果它们混杂在一起,那就是为什么您会看到这个问题。