有一些我们想要忽略的文件,而不是由git跟踪,我们无法弄清楚如何做到这一点。git如何配置为忽略文件?
我们有一些第三方的C
图书馆是解压缩的,我们在Git中有它。但是,当你configure && make
它,它会产生许多新的文件。如何编写.gitignore
来跟踪源文件,而不是新的东西。 (它不像禁止*.o
)
编辑:至少有12个文件类型。所以我们不想枚举,我们想要哪种类型,哪种不需要。
有一些我们想要忽略的文件,而不是由git跟踪,我们无法弄清楚如何做到这一点。git如何配置为忽略文件?
我们有一些第三方的C
图书馆是解压缩的,我们在Git中有它。但是,当你configure && make
它,它会产生许多新的文件。如何编写.gitignore
来跟踪源文件,而不是新的东西。 (它不像禁止*.o
)
编辑:至少有12个文件类型。所以我们不想枚举,我们想要哪种类型,哪种不需要。
明确指定哪些文件应该被跟踪,并忽略所有其他人可能是一个解决办法。*
说:不顾一切和后续行指定的文件和目录应该不忽视。允许使用通配符。
*
!filename
!*.extension
!directory/
!/file_in_root_directory
!/directory_in_root_directory
记住顺序的问题。在年底把*
让以前所有的线是无效的。
看看man gitignore(5)并搜索!
。它说
模式具有以下格式:
(...)
可选前缀!否定该模式;任何先前模式排除的匹配文件将再次包含在内。如果否定模式匹配,这将覆盖较低优先模式源。
请将“示例”复制到帖子中。如果链接死亡 - 这个答案是没用的。 – drozzy
我不知道为什么你说“它不是像禁止*.o
”,但我觉得你的意思是,有没有您可以识别应用到生成的文件,但没有任何好的模式源文件?如果只是出现几件事情(比如在Linux上通常没有任何扩展的单个可执行文件),则可以在.gitignore
中明确指定它们,所以它们不是问题。
如果确实有很多很多的文件是由构建过程生成的,它们与源文件共享扩展名和其他模式,那么只需使用包含源文件的模式即可。如果真的那么糟糕,你甚至可以把*
放在.gitignore
。这意味着当您键入git status
时,不会显示新文件,或者在使用git add .
时添加文件,但它不会损害已添加到存储库的任何文件; git仍然会告诉你有关他们的更改,并在你使用git add .
时提取它们。它只会让你明确开始跟踪你所关心的文件更多的负担。
我会确保回购清洁(没有更改,没有未跟踪的文件),运行configure && make
,然后将新的未跟踪的字段放入忽略文件。像git status --porcelain | fgrep '??' | cut -c4-
这样的东西会自动拉出来,但它是值得一些眼球的时间,以确保是正确的...
然后你想如何让git知道你想要什么文件,你不?你知道,它无法读懂你的想法... –
它是*完全好*有一个30行.gitignore。 – Cascabel
如果你真的会在你问的时候忽略所有新事物,那么它很容易在脚中拍摄自己,并忘记跟踪某些事物。明确指定要忽略的文件的唯一代价是所有12个文件,gitignore将会延长11行。你永远不会看它。你会写12行代码来正确解决问题,不是吗? – Cascabel