git工作流,生命周期和最基础的命令

Posted haoocker

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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这个强大工具需要继续深入学习下去。

以上是关于git工作流,生命周期和最基础的命令的主要内容,如果未能解决你的问题,请参考以下文章

Git使用

Git - 04. git 缓存

git的生命周期的一些事

关于片段生命周期

调用 replace() 时片段的生命周期是啥?

在不存在的片段上调用片段生命周期和 onCreate 的问题