Git是目前世界上最先进的版本控制系统。所谓管理控制系统,就是当版本数量过于庞大时,人工管理成本高且容易出错,这时就出现了用软件系统作为工具来进行版本控制。

根据孟宁老师公众号的教程,总结了以下四个场景中git的使用方法。

参考文献:https://mp.weixin.qq.com/s/Km5KuXPETvG0wCGHrvj9Vg

场景一:Git本地版本库的基本用法

首先得介绍一下几个概念:

  1. Git Repository,即git仓库。最终确定的文件会保存到仓库,成为一个新的版本,并且对他人可见。
  2. 暂存区:暂存已经修改的文件,最后统一提交到git仓库中。
  3. Working Directory,即工作区,进行添加、编辑、修改文件等动作的地方。

在了解了以上基本概念后,我们通过gitbash进行对git的操作。

首先你需要设置用户名与密码:

git config –-global user.name 'user_name'
git config –-global user.email ‘user_email’

设置好后可以查看一下设置来核对:

git config –-list

接下来新建一个test文件夹并进入其中:

mkdir test
cd test

在test文件内初始化git仓库:

git init

可以发现在test文件夹内出现了.git隐藏文件。

接着来讲一讲怎么向仓库添加文件:

我们现在本地工作区新建一个new.php:

touch new.php

ls查看一下发现新建成功

 

 先查看一下文件状态吧:

git status

 

 现在这个new.php文件在本地工作区,我们得把它上传到暂存区并查看文件状态:

git add new.php
git status

 

然后再把new.php从暂存区上传到git仓库中:

git commit -m 'description'

注意:这里的description是你上传时的提交信息。

会返回给我们如下信息:

 

 这里选要注意一下,如果有如下报错:

 

 可以直接在.git/config文件中加入:

[user]
    email=your email
    name=your name

然后重新执行上传命令即可。

那么如何修改文件呢?

使用vim打开new.php并进行修改:

vi new.php

记得分清插入模式和命令模式。

修改后保存,可以通过cat命令查看一下修改后的文件:

cat new.php

 

 

然后我们将修改后的文件上传至仓库,步骤与之前上传的步骤一样:

git add new.php
git commit -m 'description'

删除工作区文件:

re -rf new.php

ls一下,发现文件的确没了

 

 删除暂存区文件:

git rm new.php

  git commit -m 'description'

 

场景二:Git远程版本库的基本用法:

远程版本库存在的意义主要有两点,一是备份,二是代码共享以及集中化管理。

我们可以使用clone操作,将远程仓库的内容复制到本地。这种复制在本地的文件是与远程仓库之间独立的,不过我们可以通过其他操作使得远程仓库的文件与本地修改过的文件进行同步。

比如:

 

git clone https://github.com/liufengdb/TensorFlow-Examples.git

 

 

 

 

这时候就把对应文件复制到了本地。

 

 

我们可以对本地文件进行修改并再次上传到本地仓库里去:

vi input_data.py
git add input_data.py
git commit -m 'description'

接下来就要将本地仓库的文件更新到远程仓库中,使用push命令:

git push

场景三:团队项目下的分叉合并

所谓git分支呢,就像两个平行宇宙一样。平时对你没什么影响,但是如果在某一天,他们相交了,那就需要做一些处理了。

查看本地分支:

git branch

 

查看远程分支:(以之前clone下的文件为例)

 

 

 新建一个dev分支,但仍然停留在当前分支:

git branch dev

 

这时我们先再master分支中新建一个1.txt,并进行编辑,方便接下来的操作:

 

 

 新建一个分支,并切换到该分支:

git checkout -b update_1010

 

 这时候再查看一下分支:

 

 我们可以看到在执行切换分支的命令后,当前分支发生了变化:

 

 

我们可以在updata_1010分支中对1.txt文件进行修改,然后上传

 

 

 

 然后回到master分支,并进行分支合并:

git checkout master
git merge update_1010

 

 

 

 场景四:GitRebase

git rebase可以将本地的多次提交合并,以简化提交历史。

我们先查看一下log记录:

 

git log

 

 

 

 

 然后使用git rebase进行操作:

git rebase -i HEAD~2

 

 将第二行的pick改为s

 

 然后保存:

 

 

 

 到这里我们完成了修改。再次查看一下log记录验证: