[英]How to deal with xxx~HEAD after git merge?
在我的分支A:
我將文件夾從folder04/config.xml
復制到folder05/config.xml
,然后git add
和commit
。
在我的branchB中(B從A分支出來):
我已經有一個名為folder05/config.xml
文件。
現在我將branchA
合並到branchB
,看起來像這樣一個奇怪的沖突。
Untracked files: (use "git add <file>..." to include in what will be
committed)
folder05/config.xml~HEAD
它生成一個名為config.xml~ HEAD的文件,這意味着什么?
我無法理解為什么,在這種情況下我該怎么辦?
它生成一個名為config.xml~HEAD的文件,這意味着什么?
這個文件是由git
自動生成的,因為你有一個文件夾沖突沖突 - 你有兩個在試圖占用名稱config.xml
分支中無關的項目。
這可能是由各種情況造成的:
最有可能的是 ,您在分支中創建了名為config.xml
文件。 在您要合並的分支中,將另一個文件重命名為 config.xml
。 由於這兩個文件缺少任何共同的祖先,因此無法合並。 它們都應該保存在工作目錄中,但是存在沖突。 因此,他們都將被保留,但唯一的名稱。
正在合並的分支中的config.xml
將作為config.xml
在磁盤上檢出。 分支中的config.xml
將作為config.xml~HEAD
在磁盤上檢出。
這是一個例子,我們在master
分支中添加一個名為newname.txt
的文件,並將file.txt
重命名為我們合並的分支中的newname.txt
。在這種情況下,將引發沖突並且我們分支的內容將在工作文件夾中寫為newname.txt~HEAD
:
% git checkout -bbranch
Switched to a new branch 'branch'
% git mv file.txt newname.txt
% git commit -m"rename file -> newname"
[branch d37e379] rename file -> newname
1 file changed, 0 insertions(+), 0 deletions(-)
rename file.txt => newname.txt (100%)
% git checkout master
Switched to branch 'master'
% echo "new file" > newname.txt
% git add newname.txt
% git commit -m"added newname in master"
[master f7bd593] added newname in master
1 file changed, 1 insertion(+)
create mode 100644 newname.txt
% git merge branch
CONFLICT (rename/add): Rename file.txt->newname.txt in branch. newname.txt added in HEAD
Adding as newname.txt~HEAD instead
Automatic merge failed; fix conflicts and then commit the result.
一旦您完全解決了沖突並提交了合並,您只需從工作目錄中刪除~HEAD
文件即可。
(最后,請記住,git不跟蹤發生的重命名,它使用啟發式方法來檢測重命名。所以這種沖突 - 實際上 - 可能不是真正的沖突,因為文件可能沒有真正重命名。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.