3 回答

TA貢獻1780條經驗 獲得超1個贊
我將接受Junio Hamano(Git的維護者)通過電子郵件發送的答復,因為我認為它比正式文檔更清楚地解釋了某些事情,并且可以被視為“官方”建議:
.gitignore和.git / info / exclude是調用相同機制的兩個UI。樹內.gitignore將在項目成員之間共享(即,每個在項目上工作的人都應將與其中的忽略模式匹配的路徑視為無效的)。另一方面,.git / info / exclude用于個人忽略模式(即,您在從事項目工作時,將其視為雜項)。
假設不變的機制不應被濫用。這是“我知道我的文件系統操作很慢。我向Git保證,我不會通過使用該位來更改這些路徑的方式-那樣,Git不必每次檢查是否在其中更改了內容我要求輸出“ git status”。除此之外,它沒有其他含義。特別是,Git 不能保證Git始終會認為這些路徑是未修改的--如果Git可以確定標記為假定不變的路徑已更改,而又不會產生額外的lstat(2)成本,則它保留以下權利:報告該路徑 已被修改(因此,“ git commit -a”可以自由提交該更改)。

TA貢獻1815條經驗 獲得超10個贊
希望不會有太多的信息源被松散地使用,索引和提交,因為它們都是不同的且有意義的。
已建立索引意味著該文件位于git索引中。在過去的某個時候,有人git add在文件上使用過或具有等效命令。該文件已被跟蹤,也可能已提交。
已跟蹤表示git正在監視文件中的更改。跟蹤任何已提交的文件或索引中的任何文件。
提交意味著該文件在git的歷史記錄中。該文件至少有一個檢查點。您可以還原到該文件的任何提交版本。
現在就我所知。我不確定這個定義,但這是我的理解;很高興對此進行糾正:
提交索引文件后,該文件將不再在索引中。下次修改(或刪除)時,它又回到索引中。 索引是與提交的所有跟蹤文件的總和。
索引也稱為緩存或暫存區。
關于您的主要問題。.git / info / exclude與.gitignore相同,只是優先級較低,不在存儲庫中(因此,未提交和共享)。都不會影響已經跟蹤的文件。兩者都會影響當前未跟蹤的文件。在.gitignore之后git add或git commit為時已晚;git已經跟蹤了文件,.gitignore不會對此產生影響。
假定未更改僅影響跟蹤的文件,因此與.gitignore完全分開。它可以暫時假裝該文件未跟蹤并被忽略(但它不一定必須也不能與正常行為有所不同)。就像其他答案提到的那樣,這并不是用來忽略對文件的更改,只是為了潛在地避免在慢速文件系統上進行文件系統操作。
回復:第3點:您不應將編譯文件添加到git中。將文件編譯到源所在的其他目錄,然后忽略整個目錄。將編譯后的文件捆綁到一個庫中,并將其添加到工件存儲庫中,但不要將其放入git中。
- 3 回答
- 0 關注
- 1319 瀏覽
添加回答
舉報