2011-04-10 146 views
18

當我從一個分支中刪除文件時,它從所有分支中刪除。我能做什麼?git只從一個分支中刪除文件

+0

能夠看到確切的問題,如果你可以給你執行的命令(可能創建一個簡單的演示庫展示問題:'git init; touch bla; git add bla; git commit -m'bla'; git checkout -b A; git rm bla; ...') – knittl 2011-04-10 17:04:00

回答

21

當使用git刪除文件並保持項目狀態(git commit)時,它只會在該提交及其子項(說:在該分支中)中被刪除。當將該分支合併到另一個分支時,它可能會被刪除(除非在其他分支中進行了更改)。

當刪除一個文件,不提交它,然後切換分支,git會將你當前的一組更改應用到另一個分支,在你的情況下刪除文件。提交刪除應該避免你看到的問題

-4

不,這是不正確的。我認爲你的困惑來自於分支之間的切換。當你做「git checkout」時,它會保留你的工作樹,所以你剛剛刪除的文件在切換後不會重新出現。 可以切換到不同的分支並重置所有已完成的更改(刪除文件)。你可以這樣做,例如在切換後編寫「git reset --hard」

+1

這是非常糟糕的建議。 ''會將當前分支指針移動到指定的提交,這與'git checkout'的作用非常不同,即將HEAD設置爲分支(或提交/標記)並檢出該樹,然後重新應用更改(如果可能,文本合併) – knittl 2011-04-10 17:05:41

+0

好吧,我同意在談論新手的基本使用案例時,提到「reset - hard」有點危險。無論如何,我認爲爲了演示的目的,這是理解d什麼是工作樹和什麼是分支(​​這或多或少是問題,對不對?)之間的區分。 – 2011-04-10 17:49:35