我是Git的新手,假设我一次创建了10个文件,然后将这10个文件添加到舞台区域,然后提交了它们。
然后我创建了另一个文件(第11个文件),因为该文件的名称很长,所以我不想键入git命令
git add lllllllllllllongname.txt
我输入:
git add。
git还会在内部再次将第一次创建的那10个文件重新添加到暂存区吗?
因为我检查了Git文档,不是说add
命令只会将未跟踪的文件或修改过的文件添加到暂存区吗?
答案 0 :(得分:0)
使用git add .
时,git 仅会将具有更改的文件添加到登台区域。
如果在初始暂存后编辑或添加了新文件,则仅这些更改将在下一阶段添加。承诺在这方面没有什么区别,但会使分期变得更加困难。
答案 1 :(得分:0)
If you create 10 files first (1.txt,2.txt...…,10.txt) then commit all as below
git add .
git commit "commit message"
git status
如果您执行git status
,那么您看不到它。
然后,当您创建下一个文件(即11.txt)时,现在如果执行git status
,则只会看到您最近创建的一个文件,因此再次执行上述3条命令,您将意识到只有一个文件是添加用于提交,即11.txt
git add .
git status
git commit "commit message"
git status
答案 2 :(得分:0)
git add
documentation for pathspec描述了git在添加目录时的行为。
git add
[options…] [<pathspec>…]
... …还可以指定一个前导目录名称(例如,添加
dir
和dir/file1
的{{1}},以更新索引以匹配整个目录的当前状态(例如,指定dir/file2
不仅会记录在工作树中修改的文件dir
,还会记录向工作树添加的文件dir/file1
,而且还会记录从工作树中删除的文件dir/file2
)。请注意,旧版的Git曾经忽略已删除的文件。如果要添加修改的文件或新文件,而忽略已删除的文件,请使用dir/file3
[或--no-all
]选项。
在您的情况下,并假设使用git的最新版本,--ignore-removal
将在当前目录子树中暂存以下任何更改
对于已经暂存的更改,这些文件不会显示为已修改,因为工作树中的内容将与索引或暂存区域中的内容相同。
默认情况下,将阶段删除文件更改为version 2.0.0。
git add .
现在与git add <path>
相同,因此git add -A <path>
会注意到您从目录中删除的路径, 记录删除。在旧版Git中,使用git add dir/
忽略删除。您可以说git add <path>
来 如果您确实愿意,仅在 path 中添加添加或修改的路径。
答案 3 :(得分:0)
这里重要的是,登台区域已经包含了您的所有文件。
如果您的存储库不是太大,请尝试运行:
git ls-files --stage
如果您的存储库中有很多文件,这将产生大量的输出。仍然只是 looking 的一种情况,所以还可以,但是您可能希望通过分页器通过管道传递输出-git ls-files
不是日常使用的Git命令,因此它不是self -分页,例如git log
和git diff
。
git status
说:
On branch master
Your branch is up to date with 'origin/master'.
nothing to commit, working tree clean
您的暂存区包含许多文件!重要的是,现在暂存区域中的内容与其他两个区域中的每个内容都相同。
请记住,Git每次都有每个跟踪文件的三个副本。假设您跟踪的文件之一名为README.md
。它在您的工作树中,您可以在其中看到它并对其进行操作。但是有三个副本!
有HEAD:README.md
,它是当前提交中冻结的已提交文件。使用git show HEAD:README.md
进行查看。
然后在您的暂存区中有README.md
。使用git show :README.md
进行查看。该文件的副本采用冻结的 format 格式,就像您当前提交中的那个一样,但是与您当前提交中的那个不同,您可以通过将其批量替换为您当前提交中的一个来进行更改工作树。
最后,有README.md
,您可以查看并使用。您不需要任何特殊命令即可显示它,因为它只是一个普通文件。
当您运行git commit
时,Git会采用文件暂存区副本中的任何内容并将其冻结为您所做的 new 提交。因此,如果您更改了README.md
的工作树副本,但未触及 staging 副本,那么下一个git commit
将使用旧的未更改的临时副本。如果希望它使用新的,请运行git add
将从工作树复制到临时区域。这会将更新后的README.md
压缩为冻结格式,准备提交。它实际上尚未落实,已经准备就绪。
如果重新添加未更改的文件,Git将看到更新的冻结格式文件仍与原始冻结格式文件相同,已经在HEAD
提交中并且已经在暂存中区域。是否将未更新的文件复制到暂存区域中的未更新,仍相同,仍可使用的文件中,都没有关系。
实际上,登台区域是您的建议的下一次提交。它开始与您的当前提交匹配。如果您重新添加文件,那将是无害的:它们没有被更改,因此它们仍然与您当前的提交匹配,或者已被更改,但是您仍然希望在建议的下一次提交中对其进行更改。
您不唯一想要git add
的特定文件是在工作树中对其进行更改时,但是您想要:
如果文件README.md
在您的当前提交中,并且您将其存放在暂存区域的 中,则该文件不在您的 next中提交,那么无论如何,在Git看来,您已经删除了README.md
。是否已删除工作树中的README.md
并不重要。该工作树不适用于 Git ,适用于 you 。您可以在工作树中查看和使用文件。 Git使用暂存区副本进行 next 提交,而已提交的副本(每个 提交中都有一个)用于已提交的副本。