2012-08-16 68 views
3

在本地Git(克隆)存儲庫上工作時,我創建了一個分支,並在其中放置了.gitignore文件以從git commit中排除幾個目錄。它工作得很好,但切換到不同的分支後,那些目錄(被排除的目錄)出現在它(不包括這些目錄的分支上)。爲什麼不.gitignore跨分支機構工作?

這是一個正常的Git行爲?如果是這樣,避免上述問題的最佳做法是什麼?

回答

6

.gitignore文件與存儲庫中的文件一樣。因此,如果您創建一個新的.gitignore文件,將其提交到一個分支,然後切換到另一個分支,.gitignore文件將消失。這個是正常的。

+0

我指的是**排除的目錄**,它們出現在「新」分支中,它們是在「舊」分支上創建的。 '.gitignore'文件不會出現在「新建」分支中。 – MrRoth 2012-08-16 07:24:57

+1

我不確定我的理解。如果這些目錄尚未添加到存儲庫,那麼Git不會觸及它們。所以當你切換分支時,這些目錄仍然存在,但是另一個分支上缺少'.gitignore'會使這些目錄在'git status'中顯示爲untracked。 – 2012-08-16 07:29:59

0

當您從分支A移動到分支B時,應該從該分支中​​已經提交的A發生更改。

2

還有三個其他位置可以指定忽略的文件。從man gitignore(我排除的CLI之一,因爲它是唯一相關的管道命令):如果你想全局忽略文件,使用第二

o Patterns read from $GIT_DIR/info/exclude. 

o Patterns read from the file specified by the configuration variable core.excludesfile. 

。創建~/.gitignore並在~/.gitconfig指定:

git config --global core.excludesfile ~/.gitignore 

我只會用這個爲編輯交換文件和.DS_Store等的建議。應該在存儲庫級別指定存儲庫特定的忽略文件。另外,當您將文件添加到.gitignore時,請不要忘記運行git rm --cached