Git commit modified和Git commit new file的区别

3
感到困惑...
如何为修改后的文件执行git commit,以及如何为新文件执行git commit?
此外,如何在git中单独提交文件?

1
一个简短的总结:最重要的是内容。提交(commit)代表整个工作树的快照,尽管它容易被视为差异(diff)。如果您暂存(staged)和提交(commit)的文件在之前的提交中不存在,则为新文件。如果它存在(并且已更改),则为修改文件。 - Cascabel
1个回答

5

Git提交过程分为两个部分。首先,您需要“暂存”单个文件,然后执行“提交”命令,将“暂存”的文件添加到代码库中。因此,如果您想要“暂存”文件,首先需要使用“git add”命令:

git add myfile1

您可以对任意数量的文件执行此操作。当您调用“git status”时,您应该会看到已暂存文件的列表。您可以“添加”已经在您的存储库中但有更改的文件,也可以“添加”尚未在您的存储库中的文件。新文件将出现在已暂存区域中,其他文件只会出现为修改过的文件,但是当您最终调用“git commit”时,您将提交所有已暂存的内容。“-a”选项意味着自动暂存所有已修改的文件,并将它们提交(注意:这不包括尚未在存储库中的文件)。
以下是一个示例:
我有一个存储库,其中有两个文件:file1.txt和file2.txt 当我调用git status时,我会得到以下结果:
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#   modified:   file2.txt
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#   file3.txt

如果我想提交file2.txt和file3.txt的更改,可以执行以下操作:

git add file2.txt
git add file3.txt
git commit

这将提交新文件和对file2.txt所做的更改。

然而,如果我只使用 git commit -a 命令,则只会提交 file2.txt 的更改,而新文件(file3.txt)将被忽略。

因此,为了达到相同的效果,我也可以执行以下操作:

git add file3.txt
git commit -a

在这种情况下,我不需要添加已更改的文件,因为提交时的 -a 选项会处理它。
注意:如果您调用 git commit 而没有任何“暂存”的文件,则什么也不会发生。

您可以使用 --allow-empty 标志创建一个空提交。 - Adam Dymitruk
请注意,“git stage”是“git add”的同义词。 - William Pursell
@adymirtruk 很有趣,为什么要有空提交? - drewag

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接