2011-11-30 66 views
6

我想在我的存儲庫中包含源文件(在有人克隆存儲庫時提供它),但默認情況下已將其更改忽略。git包含文件但未更改其內容

git update-index --assume-unchanged ...不起作用,因爲它只適用於本地索引。我希望所有用戶都可以在默認情況下忽略文件。

.gitignore不起作用,因爲如果我通過git add -f ..跟蹤文件,則會跟蹤對其的更改。

我試圖實現會發生什麼,如果我svn add編輯文件,然後svn:ignore編輯它。

編輯:

看起來這恰恰是不可能的Git和我改變了源文件組織和構建在這個古老的顛覆行爲依賴。

例子:

$ git clone [email protected]:gsmith/sandbox.git 
snip... 
$ cd sandbox/ 
$ ls -a 
. .. .git .gitignore gitignored tracked 
$ cat .gitignore 
gitignored 

$ echo foo >> gitignored 
$ git status 
# On branch master 
# Changes not staged for commit: 
# (use "git add <file>..." to update what will be committed) 
# (use "git checkout -- <file>..." to discard changes in working directory) 
# 
# modified: gitignored 
# 
no changes added to commit (use "git add" and/or "git commit -a") 

我想這個文件被忽略。

$ git reset --hard HEAD 
HEAD is now at 34b1f3d initial setup 
$ git rm gitignored 
rm 'gitignored' 
$ git commit -m "test" 
[master cd8199d] test 
1 files changed, 0 insertions(+), 1 deletions(-) 
delete mode 100644 gitignored 
$ git status 
# On branch master 
# Your branch is ahead of 'origin/master' by 1 commit. 
# 
nothing to commit (working directory clean) 
$ ls -a 
. .. .git .gitignore tracked 

$ echo foo >> gitignored 
$ git status 
# On branch master 
# Your branch is ahead of 'origin/master' by 1 commit. 
# 
nothing to commit (working directory clean) 

現在它被忽略。但是,克隆存儲庫的人將無法獲得gitignored的內容。

+0

沒有'.svnignore',只有svn:忽略屬性 – manojlds

+0

@manojlds,謝謝,我已經糾正了這個問題。 –

回答

0
  1. 將文件添加到您的特定回購.gitignore
  2. 如果它已經被追蹤(可能是你的情況),只需要做git rm --cached myfile

希望這是你想要的。如果沒有,你可以看看this

0

要重寫您的標題:您想要跟蹤文件,但未對其進行更改。這聽起來像是一個矛盾。據推測,你有一些文件以本地方式進行了更改,這些文件對存儲庫的其他用戶沒有意義,但也包含每個人都需要的內容。答案當然不是這樣做的。有兩個主要選項:

  • 拆分文件。一部分是「本地」,不需要跟蹤,另一部分是核心/共享部分,包含每個人都需要的東西,而且通常不會修改。您應該在build/deploy/runtime中根據需要自動創建空白/模板本地文件。

  • 將該文件部署爲模板,然後使用,複製一份。你可以在build/deploy/runtime中自動執行拷貝。

無論哪種方式,這個問題是不是「我怎麼告訴Git的不跟蹤這個文件我只是告訴它來跟蹤?」但是「爲什麼我要追蹤並不追蹤相同的內容?」

+2

問題是git中的'track'意味着兩件事情。1)將此文件的副本保存在存儲庫中2)當我提交到存儲庫時,請注意對此文件所做的更改。這個問題涉及保持1),同時刪除2)。這不是一個矛盾,它只是不是git所做出的區分。 –

+0

@WaylonFlinn這是Git環境中的一個矛盾,這就是問題所在。在不注意變化的情況下保留副本會導致很多複雜性,Git避免介紹這一點,因爲可能(並且通常事實上更好)執行類似我所建議的兩個選項的操作。 – Cascabel