git 日常简单操作俗解

1.

    某天,老板在某目录下建了一个叫gittest 的文件夹,并且用 git init 来将其变为git 仓库。
并且自动生成了主分支master,这是属于老板才能操作的分支。
git 日常简单操作俗解
git 日常简单操作俗解

2.

    仓库建好后,老板想了想,在/e/workspace/gittest/下(也就是仓库中)创建一个名为readme.txt的文本,里面写上内容“123456”。
    他使用 .git status 查看了一下自己仓库中的状态,发现自己刚创建的文本需要 使用 git add 加到中间暂存区中,这是一个本地与仓库的中间地带。
git 日常简单操作俗解

3.

    于是老板先后使用 git add -A ( 或 git add readme.txt)、git commit -m"master:create a file with 123456" 两操作将文件放于仓库中。
    他打开Git Extensions 这个可视化工具查看到 matsr  这个刚创建的版本。
git 日常简单操作俗解

4.

    这时他想想,觉得文档内容内容太少了,于是又打开文档修改了一下,加上789,按上面的操作,把文档再次提交到仓库中。在可视化工具中查看时,发现它有两个版本了。底下一个是刚创建时的,上一个是刚才提交的。
git 日常简单操作俗解

5.

    第二天,他找来两个工仔:小A与小B。让他们在自己的文档的基础上发挥自己的想像将更多内容补充上去。由于公司很穷,全公司的人都在一台主机上工作,老板告诉这俩人文档的地址,但不允许他们直接在他的主分支也就是master 上改,要自己建分支。
    于是小A与小B商量好轮流使用主机来完成老板的任务。

6.

    小A先使用,他打开地址后,发现当前分支是master,老板不让动他的,那只好建一个自己的分支啦,于是使用:git checkout -b branch_code 命令,建了一个名叫branch_code的属于他的分支。
git 日常简单操作俗解
    他打开文档,在里面另起一行加了“abcd”,并将其两步提交到仓库。在他离开前,使用git checkout master,将分支切回了master。
git 日常简单操作俗解

7.

    小B坐上,发现目录直接在master了很开心,直接敲下命令 git checkout -b branch_num ,创建自己的分支branch_num 。
    他打开老板要求修改的文档,很快地在文档中另起一行写下了 “110 120”,并且两步提交到仓库中。
git 日常简单操作俗解

    当他查看可视化工具时发现原来这文档老板创建后改了一次,并且小A已经建有他的分支了叫branch_code。
git 日常简单操作俗解

8.

    新的一天早上,老板来得非常早,他迫不及待地打开电脑,切到自己的master分支上,把昨晚自己想好的好点子加到文档上。于是加了 10 11 12,并且两步提交。
    早上是小B使用电脑时间,他切到自己的分支,在文档中添加内容 “999”,并且两步提交。当他打开可视化工具查看时,发现早上老板对master有所修改。他想,为了以后合并到master的时候冲突少一点,自己应当先把master合并过来。
git 日常简单操作俗解

9.

    于是小B在自己的分支上执行:git merge master。不出意外地,存在冲突。
git 日常简单操作俗解
    他打开文档,发现如下内容。HEAD 与“===”之间的是自己当前分支的内容,下面的刚是老板修改的内容。经过观察,他发现老板应该是修改第一行。
git 日常简单操作俗解
    于是他整理得到如下内容。既保证了老板的修改,又保证了自己的修改,两者都没丢失。(把老板修改的丢了,那就闯祸了)
git 日常简单操作俗解
    修改完后,他执行git status 查看状态。发现提交的可执行操作除了git add 之外,还有一个 git merge --abort 。这是什么?以前不是很了解。
git 日常简单操作俗解
git 日常简单操作俗解
    好奇心上来了,他就按  git merge --abort 执行了一下,打开文档,发现这是他合并前的内容。原来这个命令相当于取消合并。
git 日常简单操作俗解
    唉,只好再次git merge master ,然后git commit -m"***"。但是他发现提示错误了。原来,自己是git merge master 
,后直接提的git commit -m"***",冲突都没解决呢,它是不让提交的。急了步骤都忘了。一顿弄之后终于提交成功了。

git 日常简单操作俗解
git 日常简单操作俗解

    他打开可视化工具发现,自己的分支头已经指向自己的分支与master分支的交汇处了,说明合并好了。
git 日常简单操作俗解


10.

    下午的时候老板准备看看小伙子们的修改成果。于是他分另将另外两个分支的合并过来,于是分别执行git merge branch_mun、git merge branch_code,当执行git merge branch_mun的时候,很顺利(由于小B已合并过master并解决过冲突了,此时没有冲突)。但当他执行git merge branch_code 的时候,就出现冲突了,老板当时就努了:这小A做事不认真积极,今年不给他涨工资!
git 日常简单操作俗解
git 日常简单操作俗解

回顾

上面总共使用的命令有:
    git init  :将目录初始化为仓库;
git status :查看当前分支状态;
git add [-A 、文件名(路径+文件名)] :将文件提交到暂存区;
git commit -m"*****" :将文件提交到仓库;
git checkout -b 分支名 :快速创建并切换到分支上;
git merge 分支名1 :将分支名1上的内容合并到当前分支上;
git merge --abort :回退该次合并。