0

如果有人认为主题问题是错误的,您可以编辑。

我们在这里有相当大的包,其中只有几个目录被修改。我的意思是有很多目录路径,其中包含更多文件,那么我们实际上需要使用 git 进行跟踪。所以api/dir/dir2/contrib/里面有10个文件,只需要跟踪2个。我们有很多这样的位置,为此使用 gitignore 真的很麻烦。第一个选择是忽略所有文件,git add只有那些我需要使用 -f 标志提交的文件,每次都这样做真的很烦人。有没有更好的解决方案来组织这样的 repo?

4

1 回答 1

2

您可以忽略所有内容并将不想忽略的文件添加到.gitignore文件中,并以感叹号为前缀。

例子:

*
!.gitignore
!foo.txt

这将忽略除文件.gitignorefoo.txt根文件夹中的所有内容。

不幸的是,当涉及到目录中的文件时,它并不那么容易。

假设我有以下结构:

/.gitignore
/foo.txt
/sub/foo.txt
/sub/some_other.txt
/sub2/sub21/bar.txt
/sub2/sub21/some_other2.txt

我只想包括bar.txtfoo.txt忽略其他所有内容。

*忽略所有内容,因此它也忽略子文件夹。简单地添加!sub/foo.txt不足以使 git 取消忽略该文件。你真正需要做的是:

  1. 取消忽略sub!sub/
  2. 取消忽略sub/foo.txt!sub/foo.txt

如果您的目录层次结构很深,这将变得非常麻烦。

要取消忽略bar.txt,需要以下内容:

!sub2/
!sub2/sub21/
!sub2/sub21/bar.txt
于 2013-02-19T11:14:59.453 回答