2013-03-19 85 views
2

是否可以在每個遠程基礎上使用.gitignore?我希望能夠從開放源代碼項目的公開回購中獲取核心更新,但是將本地更改從當前的.gitignored目錄推送到我的私人git回購在不同的遠程。這可能嗎?每個遠程使用.gitignore?

謝謝!

編輯:進一步反思,它看起來像git submodules可能是一個很好的方法來處理這個問題。

http://git-scm.com/book/en/Git-Tools-Submodules

EDIT2:我一直在使用的子模塊整天和解決方案似乎最適合我想要的東西來完成。

回答

2

由於.gitignore文件存儲在存儲庫中,因此它的版本類似 任何其他文件。因此,它可能因分支而有所不同,因此您可以對您喜歡的本地副本進行任何更改,並將這些副本提交給您的本地分公司。

.gitignore文件的內容不影響檢索 資料庫的內容,所以有局部的變化不會改變,你得到 當您從項目公開回購拉動的結果。但是,當來自公共存儲庫 的版本更改時,您可能需要手動解決該文件中的衝突 。

或者,您可以單獨保留.gitignore文件並使用git add -f添加要在本地跟蹤的文件。一旦文件被 添加到git存儲庫,它被忽略將不起作用。但如果你 定期添加文件到被忽略的目錄,它可能是一個很好的 想法修改.gitignore文件,以便git可以提醒你,有 文件需要添加。

如果你將要作出你想送 上游到公益項目的其他變化,這些應該在分支上進行修改而不忽略了你的 本地更改.gitignore文件和這些否則 的增加文件。然後,您可以將這些更改合併到您的本地分支,使用 忽略的文件進行正常使用。

+0

有趣。所以我會創建並切換到分支,然後從.gitignore中刪除我想跟蹤的目錄。然後我可以跟蹤它並推送到我的私人回購。當我需要將項目更新提交到核心應用程序時,請切換回項目分支? – gtcaz 2013-03-19 14:17:51

+0

如果這些是您打算讓您不需要進行任何分支交換的唯一更改。由於git作爲一個分佈式系統的本質,您已經在一個私有分支上,並且從上游存儲庫獲取更改正是「git pull」所設計的目的。 – qqx 2013-03-19 14:20:43

+0

輝煌。我從原始大師那裏抽取,並且合併的上游項目提交到我的本地開發分支。 (核心開發和本地開發文件位於不同的目錄中,因此不應該有衝突)。然後我將該分支推送到我的私人回購站,該回購站現在包含所有內容。聽起來對嗎? – gtcaz 2013-03-19 14:34:35

0

我不這麼認爲 - 但git讓我感到驚訝。

這是我的理解,.gitignore是存儲庫範圍,適用於一切。

有可能明確git add ...特定的忽略文件,哪些git將繼續跟蹤,就好像它們沒有被忽略 - 但這不是每個遠程。

0

不,這是不可能的。你需要爲此維護單獨的分支。

1

我也有一個類似的問題,我用2個遙控器工作,需要忽略不同的文件。

這是我做過什麼:

$ git fetch <public remote> 

全部合併,但不包括改變目前的的.gitignore

$ git merge --no-ff --no-commit <public remote>/master 
$ git checkout master path/to/.gitignore 
$ git commit -m "Merged ... into ... excluding the .gitignore" 

這樣我拉從一個遠程的變化,並保持我現有.gitignore文件