2010-07-23 103 views
10

我們正在從Perforce遷移到GIT。在perforce中,我有一些文件需要在存儲庫中,但不應該由個別開發人員定期檢查。像eclipse項目文件。每個開發人員可能會獲得最初的.project文件,但稍後會針對他們的環境對其進行微調。在GIT倉庫中標記臨時忽略的文件

隨着P4,我可以把這些文件,把它們放在一個單獨的更改列表中,並忘記它們。同步不會覆蓋它們,當我提交我的默認更改列表時,它們不會被提交。

有沒有辦法與GIT做類似的事情?

我想仍然能夠 「git的承諾-a」

+0

[Committing Machine Specific Configuration Files]可能的重複(http://stackoverflow.com/questions/1396617/committing-machine-specific-configuration-files) – Senseful 2014-09-03 19:36:18

+0

[我可以'git提交'一個文件並忽略它內容更改?](https://stackoverflow.com/questions/3319479/can-i-git-commit-a-file-and-ignore-its-content-chang es) – 2017-12-13 19:40:45

+0

*我想仍然可以「git commit -a」* - 這正是您的問題,就在那裏。使用'git',你通常不會只提交所有內容,你可以通過'git status'和'git diff'查看改變了什麼,決定添加什麼(或者添加到.gitignore),然後提交你需要的內容。這個工作流程可以確保你的提交不包含任何錯誤檢查對象或臨時文件等的內容。請參閱創建'git'歷史記錄講述一個故事,並且越好地告訴它,它就會越有用。最好不要盲目地承諾我的垃圾。 – cmaster 2018-01-29 16:14:35

回答

5

如果你需要那些共同的基礎(.project.classpath,...),您可以:

  • 這些文件的版本模板版本(.project_tpl.classpath_tpl,...)
  • 使用filter driver生成,在結賬時,實際的文件(不會進行版本控制,並只能由開發商在本地修改)

alt text

(以下簡稱 'clean' 步驟中承諾不會做這些事情的模板。
只有「smudge」步用在這裏,產生了私有文件)

注:這是一個輕微的「誤用」篩選器驅動程序,這是應該只處理文件內容,不產生新的。
但它可以幫助你在你的方案(前提是您的「smudge」腳本,如果他們碰巧已經在這裏不盲目的覆蓋Eclipse的文件。)

+1

所以我可以創建一個相當愚蠢的塗抹例程,從.tmpl擴展名的任何東西中刪除.tmpl。 然後,我可以添加.project.tmpl或配置.xml.tmpl git和當人們拉他們,他們得到.project或configuration.xml 我想我也可以將這些生成的文件添加到.gitignore和金。 – 2010-07-23 14:04:19

+0

@Marc:就是這個想法:) – VonC 2010-07-23 14:23:36

10

您可能正在尋找

git update-index --assume-unchanged .project

+0

有什麼辦法可以確保當用戶克隆版本庫時啓用這個功能,而不是依賴於他們記得執行它嗎? – Programster 2015-09-09 11:44:02

+0

不是我所知道的。 – 2015-09-13 08:40:23