在一个分支中的一个分支中更改文件并提交更改。现在在另一个分支B中编辑和重命名相同的文件。
将B合并到A git时,可以正确识别冲突( CONFLICT(删除/修改)),并且这两个文件都在工作目录中。
如果我知道想要在一个文件中同时进行更改,我该如何做到最好?
git merge-file 就是 - 如果我是对的 - 期待这两个文件和一个共同的祖先。但是如何给后者呢?我怎么能说“使用来自$ commit的$ path”或类似的东西?
示例:
mkdir git-rename-repo
cd git-rename-repo
git init
echo "First line" > afile
git add .
git commit -m "First commit in master"
git checkout -b mybranch
echo "Second line in mybranch" >> afile
git mv afile bfile
git commit -a -m "change and rename in mybranch"
git checkout master
echo "Changed first line in master" > afile
git commit -a -m "changed afile"
git merge mybranch
我现在想要一个名为'bfile'的文件,同时进行两项更改:
Changed first line in master
Second line in mybranch
由于
答案 0 :(得分:13)
就我而言,它是存储库中没有的已删除文件
CONFLICT (delete/modify): ERD.pdf deleted in HEAD and ...
我只需要这样做:git rm ERD.pdf
希望有所帮助。
答案 1 :(得分:8)
我也有情景
** CONFLICT(修改/删除):***文件名在HEAD中删除,并在6efb2a94ba0601aa1ec5050ab222a0359ee8379a中修改。 FileName版本6efb2a94ba0601aa1ec5050ab222a0359ee8379a留在树中。*
我也同样感到困惑并且达到了这个职位。
但在输入git status
时,所有的疑惑都消失了。 git status
,对冲突的文件说明如下:
未合并的路径:
(根据需要使用“git add / rm ...”标记分辨率)
所以我刚做了git rm FileName
,之后CONFLICT得到了解决。
答案 2 :(得分:2)
<强>更新强> 好的,git的递归合并算法本身就可以做到这一点。我只是用太小的文件来测试它,所以相对的相似性在重命名检测的触发器之下。
如果我用两条小行改变文件的一行,则相对变化非常大。
当然我可以做点什么
git show HEAD^:afile > afile_ancestor
kdiff3 -m afile_ancestor afile bfile
P.S。:对不起上面的格式错误。我没有打开JavaScript,所以我看不到预览。
答案 3 :(得分:1)
git status
将在这里为您提供帮助。
如果要将文件添加到当前分支,请执行git add <file-name>
如果要从当前分支中删除文件,请执行git rm <file-name>