Git应该忽略一个conf文件,但它不应该在.gitignore中。

9 浏览
0 Comments

Git应该忽略一个conf文件,但它不应该在.gitignore中。

我能在本地忽略文件而不会影响其他人的全局git配置吗?我的git状态中有一些未跟踪的文件,但我不想为每个不重要的随机未跟踪文件都提交git配置更改。

0
0 Comments

Git应该忽略一个配置文件,但它不应该在.gitignore中。这个问题出现的原因是,有时候我们需要忽略对已跟踪文件的本地修改,这在对配置文件进行本地修改时非常有用。解决方法是使用git update-index --assume-unchanged [<file>...]命令来忽略对已跟踪文件的本地修改。如果想撤销对文件的忽略,可以使用git update-index --no-assume-unchanged my-file.php命令。需要注意的是,assume-unchanged是用于已跟踪文件(存在于仓库中),而问题中的提问者想要忽略的是未跟踪文件,对于未跟踪文件,可以使用.git/info/exclude文件来避免污染通常共享和跟踪的.gitignore文件。根据stackoverflow上的解释,assume-unchanged被认为是不安全的,如果不小心的话,你的文件可能仍然会被提交。它的目的是为了提高性能,而不是解决这个问题的万无一失的方法。有一些关于这个问题的误解,部分原因是最初的git文档将其列为可行的方法。当你拉取一个新版本的文件时,这个方法会被关闭,这一点大部分网络并没有意识到。如果想撤销这个操作,或者查看当前被--skip-worktree忽略的文件/模式的列表,可以参考stackoverflow上的这个答案。

0
0 Comments

Git应该忽略一个配置文件,但它不应该在.gitignore中。这个问题的出现原因是因为gitignore文件只能用于忽略不需要与其他相关存储库共享的特定于存储库的模式,而不是特定于某个用户工作流程的存储库内部的辅助文件。Git文档中建议将这些特定于存储库但不需要与其他相关存储库共享的模式放在$GIT_DIR/info/exclude文件中。.git/info/exclude文件与任何.gitignore文件具有相同的格式,它可以用作另一种选择,将core.excludesFile设置为包含全局模式的文件名。如果已经有未暂存的更改,则必须在编辑忽略模式后运行git update-index --assume-unchanged 。另一种方法是使用git update-index --skip-worktree ,可以通过git update-index --no-skip-worktree 来撤销。当在exclude文件中进行添加操作后,请确保运行git update-index --assume-unchanged [...],否则更改不会生效。需要注意的是,如果在更改之前更改了exclude文件,这是不必要的。虽然这样可以阻止文件在提交时显示为已更改,但与被忽略的文件不同,如果执行git reset --hard命令,文件将被重置为存储库版本。如果需要全局忽略条目,可以查看gitignore文档中的有关"在所有情况下用户希望Git忽略的模式"的部分。至于在一个目录中的所有文件,可以使用git update-index --assume-unchanged mydir/**/*.*。在执行git pull并且有与本地忽略的文件同名的文件时,会发生什么?这对于未跟踪的文件不起作用。有关更多细节和问题的解答,请参考git文档和相关的stackoverflow问题。

0