我一直试图掌握'git add',特别是关于它对新修改vs已删除文件的行为方式。
我已经在网上查看了各种指南和教程,但现在很多内容似乎已经过时,特别是关于已删除的文件是否已暂存(从因为看起来git的默认行为最近发生了变化(或者至少是最近该文章所涉及的)。
即使http://git-scm.com/docs/git-add上的文档让我有点困惑,或者不确定是什么和没有使用'git add'上演。
让我们考虑一下基本命令:
$ git add <pathspec>
我对“官方”文档的理解是,其中pathspec是目录名称(例如'dir'或'dir / subdir'或甚至'。'),这会导致所有新文件和修改了和要删除的目录中已删除的文件(即删除的本地文件也将在远程仓库中删除)。
但是,如果pathspec是一个文件或一组文件(例如'doc.txt'或'* .txt'或'dir / * .js'),则暂存只适用于 new 和< em>修改文件,而不是已删除的文件。
这是对的吗?假设没有使用其他标志,两个政权之间的git是如何选择的?
然后显式标志是-A以进行新的,修改和删除。 或-u进行阶段修改和删除(但不是新的)。 或者 - 不是全部进行新的修改(但未删除)。
这是一个公平的总结,还是我误解了?文档确实引用了一个前导目录名,所以规则是'dir / * .txt'会分阶段删除文件吗?
如果知情人员可以通过陈述类似“new:yes,modified:yes,deleted:no”的内容来解释以下每个示例的行为,那将会非常有用:
$ git add .
$ git add dir
$ git add dir/subdir
$ git add dir/*.txt
$ git add *.txt
$ git add file.txt
$ git add ./file.txt
$ git add dir/file.txt
例如:
$ git add . (new: yes, modified: yes, deleted: yes)
非常感谢。