2013-09-28 56 views
1

我正在研究一個php的web應用程序,我需要一個名爲「library」的目錄,始終保持git不變。Git:如何保護一個目錄

原因是此目錄用於存儲其他文件和文件夾,用戶可能會從我的php應用程序中將這些文件和文件夾上載到服務器。因此,它包含本地計算機上的項目以及我正在使用的登臺服務器上的不同項目,這些項目不應該被刪除。

我明白我可以。 gitignore「庫」目錄,但我正在閱讀有關git的警告,可能會刪除gitignored項目,在某些時候。

有沒有明確保護目錄或文件的方法?

+1

「但我正在閱讀有關git可能刪除gitignored項目的警告」需要引用。 – PeeHaa

+0

.gitignore是唯一的方法,請檢查您是否正確提及。 https://github.com/github/gitignore。你能否讓我在「.gitignore」中提到的內容? – Viji

+0

我的.gitgnore只包含「library /」。它是否正確? – eyeprotocol

回答

3

的Git將只刪除一個目錄或文件,對於這個問題,如果這些實際上都是在某些點上存儲庫的一部分。如果你的分支沒有包含這些文件,Git根本不會觸及它們。即使它確實如此;沒有數據丟失。

爲了理解這一點,我們需要了解Git在結帳時會發生什麼。假設我們在分支A上,並且希望檢出分支B. Git所做的是刪除分支A中包含的所有文件,它們都是clean(即它們沒有任何未提交的更改)。接下來,Git將創建分支B的所有文件。現在,如果分支A跟蹤一個文件,但分支B沒有,那麼這會導致該文件在結帳時被刪除。這同樣適用於目錄(因爲Git只跟蹤文件,並且根據需要創建/刪除目錄)。但是當我們切換回分支A時,文件正在被恢復。

所以總結一下;只有當它是Git存儲庫的一部分時纔會刪除文件,並且新的結帳目標不包含該文件。否則,它會留在原來的位置(因爲Git甚至不知道它)。

因此,如果您不希望在Git中跟蹤該目錄中的任何文件,請將其添加到.gitignore,並且不要手動將其添加到存儲庫。