2017-01-11 67 views
0

當我合併來自遠程存儲庫的刪除文件的更改時,本地副本將被取消鏈接(如果它沒有任何更改)。git:如何在合併時不移除文件?

我該如何教git讓他們留在磁盤上?

編輯:

我可以取消高速緩存合併,從而

git diff --name-only -z --diff-filter=D ..origin/master | \ 
    xargs -0 git rm --cached && \ 
    git commit -m 'un-cache deleted files' 
git merge origin/master 

之前被刪除的文件,所以這不是問題。我的用戶是(像往常一樣;-))。

因此: 是否有可能沒有額外的提交做到這一點? 是否可以阻止刪除文件的合併?

回答

0

Git必須選擇一個父母的故事版本。在這種情況下,它選擇刪除遠程存儲庫中發生的版本的文件。扮演魔鬼的擁護者,假設你在你的分支中刪除了一個文件,然後將它推送到遠程,並被合併到遠程分支中。你可能會期望Git會從遠程刪除文件。所以,這裏可能沒有銀彈解決方案。在另一種情況下,您認爲在一起案件中出現不良和意外的行爲可能恰恰相反。

如果你按照下面的鏈接,你會發現如何添加刪除文件的簡要說明。

參考:git merge: Removing files I want to keep!

0

一種方式是繼續前進,承諾在一個新的分支的文件。

這些文件對你有用(以及其他人已經提交了已有)。你可能真的想要做的是結合你的文件與他們的。爲此,請在新分支上本地提交文件,然後合併該分支git pull

+0

那麼,有時你不想結合任何東西。一個例子是使用git作爲主目錄,其中有一堆易失性機器本地配置文件。我想從git中刪除它們,但* *不是從我從其他系統中取出該存儲庫的。 –

0

這爲我工作:

git reset -- any_deleted_files 
git reset any_deleted_directories 
git checkout -- . 
git commit -am "resolved merge" 

這完全刪除文件刪除的Git的知識。