git merge 之後檔案被刪除
阿新 • • 發佈:2018-11-25
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] -- [被刪除的檔案/資料夾]