的檢測我最近打,其中一個空文件是在兩個分支重新命名不同,但合併不會發生衝突而產生的問題。是的Git重命名空文件
步驟重新創建如下。
創建一個空文件。
git init touch empty git add empty git commit -m "add empty file"
將它重命名爲分支。
git checkout -b branch git mv empty empty-in-branch git commit -m "empty -> empty-in-branch"
在master中以不同的方式重命名。
git checkout master git mv empty empty-in-master git commit -m "empty -> empty-in-master"
將分支合併到主。
git merge --no-commit branch
這使消息Automatic merge went well; stopped before committing as requested
。
git status
卻與此新文件empty-in-branch
。但是沒有刪除empty-in-master
,所以如果我們在這個階段提交,我們會得到兩個文件。
我預計這將被標記爲需要手動解決合併衝突(即決定要保留的空文件)。如果原始文件非空,就會發生這種情況。
是否有什麼特別的影響重命名檢測空文件?是否有任何參數可以添加到git merge
中,以便檢測衝突(例如調整合並策略)?
肯定有趣的行爲。不確定原因,但... Git根據其內容存儲文件。所以兩個空文件在技術上會被認爲是相同的。由於可能存在大量的重疊,因此在這裏有一些特殊的邏輯是有意義的。 – Barett
它看起來好像可能會對空文件進行特殊處理。但Git已經基於它的散列只存儲了每個對象的一個副本,所以許多重複的空文件和大量重複的非空文件(即沒有明顯需要特殊處理空文件)之間沒有真正的區別。 –