为什么默认情况下.gitignore不是存储库的一部分?
我已经创建了一个为什么默认情况下.gitignore不是存储库的一部分?,git,gitignore,Git,Gitignore,我已经创建了一个.gitignore文件,它一直显示在未老化的更改区域中 为什么git不自动处理这个问题,因为这是一种用于项目(repo)的配置文件?默认情况下不能成为存储库的一部分?为什么这样的行为包含在设计中?这种设计有什么用例吗 Git希望确保您知道它将跟踪的文件,而不管其类型如何。这种神经质的对程序中文件的控制使得Git(或任何其他像样的VCS)如此强大。虽然一开始很烦人,但git没有对您的文件执行“魔术”是件好事 错误的.gitignore文件可能会对存储库造成严重破坏,自动将其签入可
.gitignore
文件,它一直显示在未老化的更改区域中
为什么git不自动处理这个问题,因为这是一种用于项目(repo)的配置文件?默认情况下不能成为存储库的一部分?为什么这样的行为包含在设计中?这种设计有什么用例吗
.gitignore
文件可能会对存储库造成严重破坏,自动将其签入可能是灾难性的.gitignore
文件可能会对存储库造成严重破坏,自动将其签入可能是灾难性的因为随着项目中代码的更改,该文件的内容可能需要更改。这意味着您希望能够存储.gitignore文件本身的版本历史,以及组成项目的文件。这意味着您将使用普通的git命令来控制提交该文件的时间
所以git没有别的事可做了。无论如何,您都需要使用git命令来正确地管理commit.gitignore(每次编辑它时隐式提交.gitignore并不比它在任何其他文件发生更改时隐式提交任何文件更有意义),这样做涵盖了跟踪该文件的所有使用情况。因此git不需要特别处理.gitignore。因为随着项目中代码的更改,该文件的内容可能需要更改。这意味着您希望能够存储.gitignore文件本身的版本历史,以及组成项目的文件。这意味着您将使用普通的git命令来控制提交该文件的时间
所以git没有别的事可做了。无论如何,您都需要使用git命令来正确地管理commit.gitignore(每次编辑它时隐式提交.gitignore并不比它在任何其他文件发生更改时隐式提交任何文件更有意义),这样做涵盖了跟踪该文件的所有使用情况。所以git没有必要特别对待。gitignore。除了其他答案之外 如果希望将被忽略的文件作为repo的一部分进行跟踪,并由签出它的其他人共享,则必须像跟踪任何其他文件一样跟踪
.gitignore
文件(签入并进行版本控制)
如果不希望签入被忽略文件的列表并对其进行版本控制,请将文件名添加到repo根目录中的
.git/info/exclude
。该文件未签入,因此对其所做的更改不会一直显示为未分级的更改。该文件是“默认情况下存储库的一部分”,但版本与工作树中的文件不同。除了其他答案之外
如果希望将被忽略的文件作为repo的一部分进行跟踪,并由签出它的其他人共享,则必须像跟踪任何其他文件一样跟踪.gitignore
文件(签入并进行版本控制)
如果不希望签入被忽略文件的列表并对其进行版本控制,请将文件名添加到repo根目录中的
.git/info/exclude
。该文件未签入,因此对其所做的更改不会一直显示为未分级的更改。该文件“默认情况下是存储库的一部分”,但其版本与工作树中的文件不同。基本上,.gitignore
只是一个文件
Git是一个非常通用的工具,没有充分的理由,它不会包含任何特殊情况。而且没有足够的理由说明为什么应该单独处理.gitignore
文件
通过这种方式,用户可以选择是否想要一个适合所有人的
.gitignore
,并将其签入。或者允许每个客户端都有自己的一组被忽略的文件。基本上,.gitignore
只是一个文件
Git是一个非常通用的工具,没有充分的理由,它不会包含任何特殊情况。而且没有足够的理由说明为什么应该单独处理.gitignore
文件
通过这种方式,用户可以选择是否想要一个适合所有人的
.gitignore
,并将其签入。或者允许每个客户端都有自己的一组被忽略的文件。git中至少有三种忽略文件的方法:
- 通过排除全局忽略所有克隆/存储库:
- 对于当前克隆/存储库,通过以下方式在本地忽略它们: