> For the complete documentation index, see [llms.txt](https://alanmpan.gitbook.io/git-learning/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://alanmpan.gitbook.io/git-learning/git/07.-geng-xin-wen-jian-bing-ti-jiao.md).

# 07.更新文件并提交

## 实验

在 test.txt 文件中添加一行内容 abc，提交至版本库

```powershell
# 查看仓库状态
$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   test.txt
# 暂存文件
$ git add test.txt

# 提交更改
$ git commit -m "Added abc to the test.txt"
[master d7f681f] Added abc to the test.txt
 1 file changed, 1 insertion(+)
```

## `git add`重复操作？

> test.txt 文件已经被追踪了，为什么修改之后还需要使用`git add`重复操作？

在上一节中，我们已经使用 `git add` 命令告诉 Git 追踪 test 文件，并使用 `git commit` 保存到了版本库。按照常理，文件已经被系统接管，文件的状态会被识别，大可不必再次重复操作。

但实际情况是，当我们对一个已经被 Git 追踪的文件进行更改时，我们需要再次使用 `git add` 命令。这是因为 Git 对更改的追踪是基于内容，而不仅仅是文件。这意味着，当文件的内容发生更改时，Git 视这些更改为新的内容，并需要你明确地将这些新的更改添加到暂存区。

## 跳过使用暂存区域

每次都需要执行暂存命令，有点繁琐，如果你希望跳过暂存区，直接将更改提交到版本库中，则可以使用以下命令：

```bash
git commit -a -m "Commit message"
```

在这个命令中，`-a` 选项参数表示自动将所有已修改的文件添加到暂存区中，并将其提交到版本控制系统中。这样就可以跳过将更改显式添加到暂存区的步骤，直接将所有更改一次性提交。

需要注意的是，在使用该命令时，只会将已修改的文件提交到版本控制系统中，而对于新添加的文件则不会生效。如果您要将新添加的文件也提交到版本控制系统中，则需要手动将其添加到暂存区（使用 `git add` 命令）或者使用 `-a` 选项参数的组合命令 `git commit -am "Commit message"`，它相当于执行了 `git add .` 和 `git commit` 两个命令。

尽管跳过暂存区可能会使提交更加方便快捷，但建议在进行提交前仔细检查所做的更改并确保代码能够正常运行。 这样可以避免不必要的错误和引入不良代码。
