Git:在未跟踪的构建目录中使用 Makefile

3
我正在编写一个C++应用程序,源文件位于`source`目录中,其中包含一个`build`目录。`build`目录包含`Makefile`,因此当我构建程序时,需要从`build`目录构建。
我希望`git`忽略`build`目录,因为它不包含源文件。但是,我确实希望git跟踪`Makefile`。如何跟踪`Makefile`但忽略其他构建文件的最佳实践是什么?我应该使用另一种目录结构吗?
谢谢!
2个回答

6

你可以通过在模式前加上 ! 来告诉 git 在 .gitignore不要 忽略特定的文件。因此,你可以在 build 目录中放置一个 .gitignore 文件,其内容如下:

# Ignore everything in this directory
*
# Except this file and the Makefile
!.gitignore
!Makefile

为了给予应有的荣誉,这篇文章可能是我第一次了解这些异常的地方。


啊,我之前一直在使用根目录下的.gitignore来忽略整个构建目录,所以我一直无法让git不要忽略构建目录中的Makefile文件。但是现在通过单独的.gitignore文件解决了这个问题。 - Travis G.

3

忽略规则只适用于git尚未知道的文件,您还可以通过指定文件名来使用 git add 添加任何文件。

因此,只需将Makefile添加到git中,并添加一个忽略规则以忽略build/目录。

您可以在build/目录中放置一个.gitignore 文件,使用模式*


虽然这个答案完全正确,但它没有解决意外删除 Makefile 的问题,如果提交了,将使在随后的提交中再次添加它变得更加困难。最好明确地使用 .gitignore 异常处理。 - SirDarius
嗯...您可以像添加其他文件一样,从命令行和GUI界面添加被忽略的文件。 - Johan Lundberg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接