Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果手动将文件添加到提交中,为什么.gitignore有帮助?_Git - Fatal编程技术网

如果手动将文件添加到提交中,为什么.gitignore有帮助?

如果手动将文件添加到提交中,为什么.gitignore有帮助?,git,Git,我已经使用git一段时间了,但我不明白.gitignore文件的意义 在提交更改之前,我们必须使用git add foo.py或类似的东西来进行阶段性更改。但是,即使在.gitignore文件中有一个模式指示git忽略.py文件,它仍然会为下一次提交准备foo.py 那么.gitignore文件有什么意义呢?这样开发人员就可以懒散地使用git add--all或commit-a?我是否忽略了一些功能?因为只说:git add.要简单得多,并且知道git会忽略正确的文件(另外,开发人员是人,即使手

我已经使用git一段时间了,但我不明白.gitignore文件的意义

在提交更改之前,我们必须使用
git add foo.py
或类似的东西来进行阶段性更改。但是,即使在.gitignore文件中有一个模式指示git忽略.py文件,它仍然会为下一次提交准备
foo.py


那么.gitignore文件有什么意义呢?这样开发人员就可以懒散地使用
git add--all
commit-a
?我是否忽略了一些功能?

因为只说:
git add.
要简单得多,并且知道git会忽略正确的文件(另外,开发人员是人,即使手动添加也会出错)。

这不仅仅是因为懒惰

考虑拥有一个大型项目(例如某个web应用程序),其中不仅有源代码,还有大量用户特定的配置文件(例如调试/开发、服务器设置等)。您不希望意外地将这些文件添加到Git中,每个开发人员都应该有自己的配置

如果目录结构真的很复杂呢?例如,如果你正在使用一些工具,比如:Django、Angular、量角器、Jasmine、Karma、早午餐(这并不少见),你从一个地方跳到另一个地方,你很难记住你在哪里做了改变。更常见的是,只将整个外部目录添加到Git中,而不关心不应该存在的东西是否会意外地找到它的方向

编辑(根据要求)


.gitignore
实用性的另一个例子是,当您使用某个智能IDE(如JetBrains中的一个)时,您正在进行一些重新分解(如更改一个函数的名称)(用于20多个文件),它将编辑这20多个文件。更改一个函数的名称对于立即进行提交来说似乎太少了。因此,在命令行上手动键入大约30个文件是一项乏味的任务。

我认为反之亦然。手动添加它们会使我们这些愚蠢的人更不容易犯错误。除了最琐碎的项目,我决不会使用git add.。我们甚至不应该每次提交都编辑那么多文件。@AlexMayle这对您的用例来说还可以,我很高兴git满足您的需要。然而,我在一个大型项目中工作,我知道如果我对一些文件做了一些小的更改,我不想在调用git add时提供每个文件的所有完整路径。我只做
git添加。
,然后开始使用
git diff--cached
git status
进行检查。因此,使用.git忽略git可以满足你和我的需求。@AlexMayle-你可以随心所欲地提出相反的观点,但根据经验你是错的。如果它不在.gitignore中,并且在repo的工作树中生成,它将在不久的将来意外提交。“即使我的.gitignore文件中有一个模式指示git忽略.py文件,它仍将为下一次提交准备foo.py”-gitignore对已跟踪的文件不起作用,这就是为什么会有这样的变化。你似乎明白了什么。gitignore明白了,那么这里真正的问题是什么?@1615903你显然误读了。我引用了git add foo.py,这并不意味着它已经被跟踪了。我知道。gitignore对已经被跟踪的文件不起作用。@AlexMayle-在这种情况下,你就错了。默认情况下,如果您说
git add foo.py
,.gitignore包括
*.py
,并且
foo.py
尚未暂存(并且在没有
-f
标志的情况下拒绝暂存),git将给出警告您还可以使用
git status
轻松记住更改的路径,然后使用选项卡autocomplete键入路径。我想我更害怕弄乱一个.gitignore文件,让东西通过
git add泄漏进来,而不是每次提交添加我编辑的~5个文件。好吧。。。是的,在一些简单的情况下。例如,如果您正在使用某个智能IDE(如JetBrains的一个),并且正在进行重构,例如更改一个函数的名称(用于20多个文件),它将编辑这20多个文件。更改一个函数的名称对于立即进行提交来说似乎太少了。然后,您会在命令行中键入30个文件而不是git add--all吗?很好的例子。你把我引向光明。把它放在答案里,我会接受的。另外,你不喜欢看到那些漂亮的.project、.idea.classpath东西意外地进入你的git项目吗?只需将它们添加到.gitignore中,然后您就可以放心,如果这些文件被添加到git中,那是因为开发人员自愿添加它们,而不是由于疏忽。