Git 教程 - 工作流程
正如我们上节学到的,添加文件或提交文件基本上需要两个步骤。
-
将文件添加到暂存区,命令如下,git add
$ git add test1.txt
file1.txt
将从工作区域添加到暂存区,并且它随时可以被提交到仓库。每当我们创建一个文件时,它就在我们的工作区上(本地计算机上),然后在 git add
命令之后进入暂存区。
-
它会将你的暂存区中的所有文件都推送到仓库。git commit
$ git commit -m "commit message"
我们通常会提交内容的时候也添加描述信息,比如我们在文件或项目中所做的更改,这样我们可以在将来获取此提交的日志记录信息。
git add
更改并保存文件后,我们计算机上的文件与我们的仓库中的文件就有了不同,因为在仓库中的文件仍然是此次修改之前的内容。
如果你键入 git status
,可以看到 Git 已经知道你的文件已被修改。
$ git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: test1.txt
no changes added to commit (use "git add" and/or "git commit -a")
正如 Git 所建议的那样,我们使用 git add
更新将要提交的文件。
$ git add test1.txt
现在,你可以将此更新文件从暂存区提交到仓库。
有些时候,我们同时更新了多个文件,我们当然可以用上面介绍的方式来添加所有的文件,
$ git add test1.txt test2.txt test3.txt
但如果你有大量文件或文件名太长,每个文件加起来会有些繁琐。Git 有一个快捷方式,可以将所有更新的文件和未跟踪的文件添加到暂存区,
$ git add .
这里,.
意思是与仓库不同的所有文件。
git commit
我们在介绍 Git 其他功能时已经讲到了如何使用 git commit
。基本上来讲,git commit
将暂存区推送到仓库,强烈建议你添加提交消息来描述此次提交更改的内容,因为以后你可以用 git log
命令来获取所有的已提交日志信息。
直接提交到仓库
在我们提交之前,我们需要将更改添加到暂存区。然后我们就可以提交它们到仓库。但实际上有时我们不需要将它们添加到暂存区的这个中间步骤,因为我们知道这是我们最终项目想要的,仓库或服务器上的这些更改是每个项目成员都需要进行更新的。
所以我们可以做的是先检查 git status
,来查看工作区中修改了什么。然后我们可以直接用 git commit
将这些修改提交到仓库,不用将它们添加到暂存区。
$ git commit -a -m "commit message here."
我们这里使用的是一个捷径,不用将更改添加到暂存区。但这仅在某些情况下有用处,无论何时使用此命令,都需要小心,因为它将抓取工作区中的所有内容并将其直接推送到仓库。
修改提交
我们可能在提交后遇到这种情况,我们在代码中发现了拼写错误或其他微小错误。当然,你可以修改代码并再次将更改提交到仓库。但是我们也可以做的就是我们重写最近的一次提交,并且最新的提交将会被新的修改覆盖。
git commit
后面的 --amend
标志告诉 Git 这个提交将取代之前的提交,之前的提交以后不会在日志消息里了。
$ git commit --amend -m "new information is updated"
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn