簡體   English   中英

git merge后如何處理xxx~HEAD?

[英]How to deal with xxx~HEAD after git merge?

在我的分支A:

我將文件夾從folder04/config.xml復制到folder05/config.xml ,然后git addcommit

在我的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM