〜/ .gitignore和`git update-index --assume-unchanged`有什么区别

问题描述:

我改变了我不想推送到远程仓库的配置文件中的一些设置。〜/ .gitignore和`git update-index --assume-unchanged`有什么区别

我希望它只在本地生效一个项目。

我看到有几个方法可以这样做:

Per Computer: through settings in ~/.gitconfig

  • 的git更新指数--assume-不变(2)

我正在使用SourceTree,并且仅在使用选项(2)时才看到文件从UI中消失。 (1)和(2)之间的区别是什么?

(1)和(2)之间的区别是什么?

这是否真的意味着当我在使用选项(1)后在SourceTree中看到它们时,文件不会被忽略?

.gitignore文件可防止文件显示为要添加到存储库的文件。如果该文件已被添加到.gitignore文件中,则该文件已存在于回购站中,该文件的任何更改都将由git显示并可提交。 .gitignore设置仅影响回购路径中的新文件。您可以使用它来保存由IDE创建的临时文件,或者编辑文件以显示并清除当您执行git status时修改的文件列表。

git update-index --assume-unchanged根本不显示文件已被更改。如果您对该文件进行了任何修改,那么git将不会在git status中显示它已被修改。你可以在用户的​​配置文件中使用它。当存储库被克隆时,他们需要拥有该文件,但可能会有一些他们需要的更改,以便他们可以使用代码(即更改其本地计算机的文件路径)。但是你不希望他们在引入更改时不小心提交了文件并将其他文件搞乱了。

对于配置文件的更改,您希望使用git update-index选项。你想在回购协议中的配置文件,但你不想提交更改。

+0

'update-index'是一个[plumbing命令](http://git-scm.com/book/az/v1/Git-Internals-Plumbing-and-Porcelain),其实并不是终端用户。当然,很多人使用它,没有什么问题。但如果可以的话,我建议避免它。不使用'update-index'的配置文件的一个好选择是[提交模板文件](http://stackoverflow.com/a/5658545/354577),例如, 'settings.default.ini',并建议用户将其复制到应用程序所需的配置中,例如'settings.ini',并根据需要进行修改。 – Chris 2014-10-29 16:38:11

+0

然后'.gitignore'' settings.ini'文件? – 2014-11-02 08:07:40