git工作流,生命周期和最基础的命令
git的工作流
git的本地仓库一般有三颗“树”组成,也可以当做有三个区域,第一个是你的工作目录(working directory)它存有一个文件夹(windows下的实际文件)。第二个是暂存区(index)它像一个缓存区,只是暂时保存你的文件,第三个可以理解成仓库区(HEAD)它是你用来存放你所提交的代码的区域,当然上面三个区域不是在你的磁盘中真实存在的,它是虚拟的git的工作流。
git的生命周期
一般在git版本控制下的文件莫过于有两种状态:已跟踪状态和未跟踪状态,在跟踪状态下一个文件可能在暂存区,也可能被提交到了仓库中。(以下的git都是基于本人的本地情况)
使用git时文件的生命周期如下
其中没有被git跟踪的文件处于Untracked的状态,一般处于Untracked的状态的文件是新添加到当前文件夹下的文件,如果文件被跟踪之后便进入暂存区,文件变成Staged状态,如果暂存区的文件被提交了(commit)之后文件便进入仓库区,处于Unmodified的状态,如果文件再一次被修改之后便处于modified的状态,这时需要将该文件放入暂存区(git add),然后再一次提交到仓库(git commit)注:处于Unmodified状态一定是被跟踪的文件
基本的git命令
检查当前文件状态
$ git status On branch master Your branch is up to date with 'origin/master'. nothing to commit, working tree clean
因为我的仓库是从github上clone到本地的,因此会有中间的一行:"Your branch is up to date with ‘origin/master‘."关于这句话的详细解释到分支部分会详细解释的,这里先存疑.此时说明当前目录下没有任何未跟踪的文件.
当在文件中新建一个Test1.md文件的时候,此时再使用git status命令,将会看到一个新的未跟踪的文件:
当前目录中存有的文件(此时Test1.md就是处于Untracked状态):
跟踪新文件
$ git add Test1.md
可以看到此时Test1.md已被跟踪,处于暂存状态
git add 命令使用文件或目录的路径作为参数;如果参数是目录的路径,该 命令将递归地跟踪该目录下的所有文件。下面的例子则是使用目录的路径。
此时,在目录下新建一个文件夹Files,并在文件夹目录下新建两个文件:Test2.md和Test3.md
使用gitstatus查看其状态,可以看见文件夹Files处于未跟踪状态。
使用git add Files
命令之后:
可以看见所有的文件都已经被跟踪
暂存已修改文件
如果一个文件已经处于暂存状态,这时如果修改了文件的内容,则文件会处于modified的状态,这时要重新提交到暂存区。当我在Test1.md文件中添加了内容时:
可以看到Test1.md同时处于Staged和modified状态,这里要说明的是,staged状态的Test1.md是未添加内容之前的Test1.md,而处于modified状态的是添加内容之后的Test1.md,如果想要暂存修改之后的Test1.md则使用git add Test1.md
命令,现在的状态是:
提交更新
$ git commit
以这种方式会启动文本编辑器以便输入本次提交的说明,(默认会启用 shell 的环境变量 $EDITOR 所指定的软件, 一般都是 vim 或 emacs)具体设定编辑软件在后面会讲解。
通常是在第一行输入提交说明,之后使用vim的命令:wq保存说明并退出,这时会显示提交成功
这样所有的文件就全部进入仓库区了。
总结
以上就是基本的git的流程和命令,其实掌握了以上命令和概念基本上使用git不是问题,但是如果想要更加详细了解和更加高效利用git这个强大工具需要继续深入学习下去。