git 工作流程
![cc7e50ad2149d6662a5847d22af644d7.png](https://i-blog.csdnimg.cn/blog_migrate/f0307e8fd3523974f4dd406faa9ac1f2.png)
前一节我们给大家讲了 git 的简介,发展历史,以及如何在不同的系统上安装git。本节主要介绍 git 的工作流程,主要包括工作目录 working directory,暂存区 staging area,本地/远程仓库 repository。在 git 仓库的文件都会经过从工作目录开始,到暂存区,再到本地仓库,最后提交到远程仓库。下面将为大家一一讲解。
Tips:
- 首先进入一个目录,如果当前目录没有建立 git 仓库,可以直接运行
git init
初始化这个目录。 - 如果当前目录是从 github 或者其他地方通过
git clone
方式克隆下来的话就不需要初始化。
1. git 工作目录
工作目录就是当前你正在编辑的环境,同时里面的编辑修改也是 git 没有追踪的区域。在工作目录的所有的修改,都可以通过 git status
命令查看到。
![c20937a3b09084479868862d8624f4b8.png](https://i-blog.csdnimg.cn/blog_migrate/ce3b3e027230b76162ce6fc465b82fb0.png)
Tips: 如上截图,有一个 readme.md 文件在工作目录还没被追踪。
如果有一些文件不想被追踪的话,可以新建一个 .gitignore 文件,把所有你想被 git 忽略的文件和文件夹追加进去,git 会自动帮你忽略。
$ echo "readme.md" > .gitignore
$ git status
On branch master
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
.gitignore
nothing added to commit but untracked files present (use "git add" to track)
当把 readme.md 这个文件名加入到 .gitignore 以后,git 系统就不会再提示你追踪这个文件了。
2. git 暂存区
git 暂存区是用来追踪和保存文件的修改。这些修改最后会保存到 .git 目录里。但是我们需要手动显式地添加文件到暂存区里面。
通过 git add 文件名/文件夹
将文件或者文件夹添加到 git 的暂存区。以上述例子为例,我们需要将 .gitignore 添加到暂存区里。然后可以通过 git status
查看这个文件的状态。
$ git add .gitignore
$ git status
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: .gitignore
Tips:
- 如果想回退这个操作,可以执行
git rm --cached .gitignore
,这个文件就会从暂存区移除,重新回到工作目录。 - 如果想将当前目录下的所有文件加入暂存区,可以执行
git add .
3. git 本地仓库
git 本地仓库会将你所有在暂存区的修改保存到 .git 目录里,最终你会看到的是本地仓库里的提交 commit。
首先可以通过 git commit
命令将文件保存到本地仓库,并记录提交信息。这个命令会通过 Vim 打开一个编辑器让你编写 commit log。
$ git commit
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# On branch master
#
# Initial commit
#
# Changes to be committed:
# new file: .gitignore
#
docs: add readme
Tips:
- 然后按 ctrl + X,选择 Yes,成功保存。
- 或者可以通过
commit -m "docs: add readme"
来直接保存这个提交,不用打开 Vim 编辑。 - commit log 建议遵循以下约定(点击这里看更多):
feat
: (对于用户而言新增了功能,而不是在构建脚本添加了新功能)fix
: (对于用户而言修复了缺陷,而不是修复了构建脚本的缺陷)docs
: (对于文档的修改)style
: (格式化代码,添加注释等等,没有对生产代码的改动)refactor
: (重构生产代码,譬如:变量重命名,提取方法)test
: (添加缺失的测试用例,重构测试用例,无生产代码更改)chore
: (更新构建脚本等等, 无生产代码更改)
如果 commit 了以后,暂存区就会清空了。可以通过以下命令查看本地仓库的文件。
$ git ls-tree --full-tree -r HEAD
100644 blob cdb5f04f10c21998fd7406f7e8ceafd2035d83e2 .gitignore
可以通过 git log
查看 commit log,并进一步看这个 commit 修改了什么文件。
$ git log
commit ed11ea93b9bc6361052dd31bbe330e023cbf23ad (HEAD -> master)
Author: faith <faith@mooc.com>
Date: Fri Aug 7 13:06:57 2020 -0400
docs: add readme
$ git show ed11ea93
commit ed11ea93b9bc6361052dd31bbe330e023cbf23ad (HEAD -> master)
Author: faith <faith@mooc.com>
Date: Fri Aug 7 13:06:57 2020 -0400
docs: add readme
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..cdb5f04
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+readme.md
Tips: git show 提交编号。这个编号可以通过
git log
查看 commit 后复制前几位即可。
通过 git diff
显示所有工作区和暂存区的文件的差异。如果你只想对比一个文件的差异可以用 git diff 文件名
,或者用 git diff --staged
只对比暂存区的差异。
## 4. git 远程仓库
在提交到本地仓库后,可以用 git push
推送到远程仓库。
- 在 github 创建一个仓库。
- 通过
git remote add
命令添加 remote URL。
$ git remote add origin git@github.com:iamfaith/git_wiki.git
- 通过
git push -u origin master
,将本地仓库推送到远程目录
Tips: 如果想查看当前仓库的远程分支的 URL,可以通过
git remote -v
查看远程 URL
3.小结
本节课程我们主要学习了 git 的工作目录,暂存区,本地仓库以及远程仓库。学完本节后,应该掌握上述常见命令,可以完成创建 git 目录,并将本地的文件推送到远程仓库。