如何让 .gitignore 不出现在未跟踪文件列表中?

17 浏览
0 Comments

如何让 .gitignore 不出现在未跟踪文件列表中?

我刚刚在新项目的根目录下运行了git init命令。

然后我创建了一个.gitignore文件。

现在,当我输入git status命令时,.gitignore文件会出现在未跟踪文件列表中。为什么会这样?

0
0 Comments

如何阻止.gitignore文件出现在未跟踪文件列表中?

问题的原因:可能是因为.gitignore文件本身已经被跟踪,导致它出现在未跟踪文件列表中。

解决方法:可以尝试以下几种方法来解决这个问题:

1. 将.gitignore文件添加到.gitignore文件中:在.gitignore文件中添加一行“.gitignore”,这将使.gitignore文件被git忽略。不过这不是一个好主意,我认为.gitignore文件应该被版本控制和跟踪。

2. 使用excludes文件:在一些特定的情况下,使用excludes文件可能会更好。比如,如果你使用git-svn存储库,并且不希望git-ish文件传到svn中,那么这种方法可能是可行的。

3. 取消跟踪.gitignore文件:如果你的.gitignore文件已经被跟踪,你可以尝试运行“git rm --cached .gitignore”命令来取消跟踪它。

4. 只忽略仓库中的更改:如果你只想忽略仓库中的更改,而不是.gitignore文件本身,那么这个解决方法可能适合你。你可以在子文件夹中进行实际的提交,而不在.gitignore文件所在的文件夹中进行提交。

这些方法中的任何一种都可以帮助你解决.gitignore文件出现在未跟踪文件列表中的问题。根据你的具体情况选择相应的方法即可。

0
0 Comments

问题的原因:.gitignore文件出现在未跟踪文件列表中的原因是因为该文件被git追踪到了版本库中。

解决方法:可以使用以下方法来解决该问题:

1. 将被忽略的文件列表存储在.git/info/exclude文件中,这样的设置只适用于当前的仓库副本。

2. 将这些特定于编辑器或平台的文件放在~/.gitignore文件中,这样可以在任何仓库中都被忽略掉。

3. 如果一个文件已经被追踪,可以使用"git update-index --assume-unchanged "命令停止追踪该文件的更改,而不会改变仓库的状态。这在大型共享项目中非常有用,你可以在本地进行更改,而其他人不需要将你的更改提交到仓库中。

4. 对于这种情况,最好使用每个用户的.gitignore文件。

这些解决方法对于使用git svn的情况尤其有帮助,因为团队中的其他贡献者可能不希望在svn仓库中看到与git相关的任何内容。

需要注意的是,.git目录位于仓库的根目录,而不一定是工作目录。

0
0 Comments

如何阻止.gitignore出现在未跟踪文件列表中?

问题的原因:

.gitignore文件应该是存储库的一部分,因此应该添加并提交,如git status建议的那样。它必须是存储库树的一部分,以便可以合并对其的更改等。

解决方法:

将.gitignore文件添加到存储库中,不应该被忽略。

如果确实需要这样做,可以将.gitignore文件添加到.gitignore文件中,如果不想将其提交。但是,在这种情况下,最好将忽略的内容添加到.git/info/exclude文件中,这是一个特殊的本地文件,与.gitignore文件的功能完全相同,但不会在"git status"中显示,因为它位于.git文件夹中。

解决方法:

请参阅https://help.github.com/articles/ignoring-files

这不应该是存储库的元数据,而不是被跟踪的文件吗?

存储库元数据是特定于存储库的。例如,如果在存储库中添加了提交钩子,并且有人克隆了存储库,他们将不会获得提交钩子。

如果你正在团队中工作,每个人都应该忽略相同的文件集,这就是为什么.gitignore文件被添加到存储库中的原因。没有人说你必须将其部署为项目的一部分。

.gitignore文件不一定是存储库中的文件。你可以在许多不同的位置设置忽略设置。GitHub有一篇很好的文章,可以了解更多信息。你可以在任何地方设置全局忽略设置,并且可以在存储库的.git元数据中设置特定于存储库的设置。

如果有一半团队忽略另一半正在实际处理的文件(并且项目依赖于此),这样做是否危险?

全局忽略文件对于特定于该特定环境的文件非常有用。例如,.DS_Store文件只适用于OS X上的Finder.app,并且不应该出现在项目的.gitignore文件中。同样适用于eclipse和intellij文件,除非所有参与项目的人使用特定的IDE。

在使用这些忽略文件时,当然需要判断要放入其中的内容,但它们仍然有一些很好的用途。例如,我使用Vim,所以在我的全局.gitignore文件中,我将*.swp文件标记为被忽略。这样,我就不必将其添加到我的每个项目中,而不使用vim的人就不必担心它。

对于使用git-svn的情况,我没有.gitignore文件。我使用.git/info/excludes,这是一个不会出现在"git status"中的存储库本地文件,但其功能与gitignore相同。

因此,如果您使用.git/info/exclude而不是.gitignore,则克隆您存储库的其他人将不会忽略相同的文件。

确实如此。对于只想让其漂浮在周围的文件而没有更好的文件夹的情况,它非常有用,我有时在.git/info/excludes中忽略一个"etc"文件夹,我在其中放置各种文档、下载等,这些都不想提交检查。对于git-svn,它也很有效,除非您想将.gitignore文件提交到svn存储库中。

如果您希望被忽略的文件仅适用于您的存储库,而不适用于合作者的存储库,则可以使用.git/info/exclude。

值得一提的是,将.gitignore添加到.gitignore文件中实际上不会导致其被忽略,它仍然会显示在git status中。

我在一个团队中工作,虽然我们确实想忽略相同的核心模式,但我被要求为例如模式*.swp使用全局.gitignore。这是由Vim创建的,只有我团队中的一部分人(包括我)在使用它来编写代码。

我发现将与项目相关的内容放在.gitignore文件中,将与开发/环境/机器相关的文件放在.git/info/exclude文件中是最佳实践。这样,我们不会用那些可能只与一个人有关的东西来膨胀gitignore列表,因为他/她选择了特定的开发设置。具体的例子是.DS_Store文件,只与我有关,因为我使用的是macOS。

将.gitignore添加到.gitignore文件中只是需要的简短答案。

总结一下,.gitignore用于忽略所有用户的文件,而.git/info/exclude用于仅忽略当前用户的文件。

0