1. 程式人生 > >git merge 之後檔案被刪除

git merge 之後檔案被刪除

git merge 快速合併時會以某個檔案新的操作為準,如果master將一個dev合併進來,而dev分支中對某個檔案進行過刪除操作,那麼merge之後master就會將那個檔案刪除。

舉個例子:

master 分支建立檔案 1.txt 並 commit -> 建立分支 dev -> dev 刪除1.txt 並 commit

此時如果在master分支git merge dev , master分支的1.txt 被刪除,成功快速合併;而如果是在dev分支 git merge master, 會顯示already up-to-date, 因為1.txt在dev分支已經被刪除了,不必更新。

如果操作改為:

master 分支建立檔案 1.txt 並 commit -> 建立分支 dev -> dev 刪除1.txt 並 commit -> master 修改1.txt 並commit

此時如果進行merge操作,就會產生衝突。master分支也對該檔案進行了修改,dev分支也對該檔案進行了修改,合併時就要手動解決衝突,commit之後再merge。

我考慮這個問題的緣由是,fork了他人的倉庫,進行了commit,之後原倉庫的分支也推進了,打算合併下,於是就建立了個branch,刪除所有檔案,拷貝原倉庫分支的檔案,再本地進行merge。然後我的更新就被快速合併刪除掉了。。。解決方式是直接進行拷貝,覆蓋(我額外新增的檔案merge之後不變,我沒有的檔案merge之後新增,同時改動的檔案以他的為準,merge之後進行合併處理)

或者刪除之後再恢復那些檔案 

git checkout [commit id] -- [被刪除的檔案/資料夾]