Git学习3

一、从远程库克隆

  前面学习:先有本地库,后有远程库,如何关联远程库。

  现在,假设我们从零开发,那么最好的方式是先创建远程库,然后,从远程库克隆。

  1、首先,登陆GitHub创建一个新的仓库,名为 gitskill :

    

      勾选 Initialize this repository with a README,这样GitHub会自动为我们创建一个 README.md文件。创建完毕后,可以看到README.md文件。

 

  2、现在,远程库已经准备好了,下一步是用命令 git clone 克隆一个本地库:

   $ git clone git@github.com:chengshun16/gitskill.git

  如果有多个人协作开发,那么每个人各自从远程克隆一份就可以了。

  注意:GitHub给出的地址不止一个,还可以用https://github.com/chengshun16/gitskill.git 这个地址。实际上,Git支持多种协议,默认的 git:// 使用ssh,但也可以使用https等其他协议。

  使用https 除了速度慢以外,还有个最大的麻烦是每次推送都必须输入口令,但是在某些只开放http端口的公司内部就无法使用ssh协议而只能用https。

  3、小结:

    要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone 命令克隆。

    Git支持多种协议,包括https ,但通过shh支持的原生git 协议速度最快。

 

二、分支管理

  1、创建dev分支,然后切换到dev分支:

    $ git checkout -b dev

    Switched to a new branch 'dev'

    git checkout 命令加上 -b 参数表示创建并切换,相当于以下两条命令:

        $ git branch dev 

        $ git checkout dev 

        Switched to branch 'dev'

  2、用 git branch 命令查看当前分支:

    $ git branch

    * dev 

      master

  git branch 命令会列出所有分支,当前分支前面会标一个*号。

  3、然后,就可以在dev分支上正常提交 

    $ git add readme.txt 

    $ git commit -m "branch test"

    [dev fec145a] branch test
    1 file changed, 1 insertion(+)

  4、现在,dev分支的工作完成,我们就可以切回master分支:

    $ git checkout master

    Switched to branch 'master'

    切换回master分支后,再查看readme.txt文件,发现没有修改,因为那个提交是在dev分支上,而master分支此刻的提交点并没有变。

  5、现在,我们把dev分支的工作成果合并到master分支上:   

    $ git merge dev
    Updating d17efd8..fec145a
    Fast-forward
     readme.txt |    1 +
     1 file changed, 1 insertion(+)

   git merge 命令用于合并指定分支到当前分支。合并后,再查看readme.txt的内容,就可以看到,和dev分支的最新提交是完全一样的。

  注意:上面的Fast-forward 信息,Git告诉我们,这次合并是“快进模式”,也就是直接把master 指向dev的当前提交,所以合并速度非常快。

  当然,也不是每次合并都能Fast-forward ,也有其他的合并方式。

  6、合并完成后,就可以放心地删除dev分支了:

    $ git branch -d dev

    Deleted branch dev (was fac145a).

    删除后,查看branch,就只剩下master 分支了:

    $ git branch

    * master

  因为创建、合并和删除分支非常快,所以Git鼓励使用分支完成某个任务,合并后再删掉分支,这和直接在master分支上工作效果是一样的,但过程更安全。

 

  7、小结:

    Git鼓励大量使用分支:

    查看分支:git branch

    创建分支:git branch <name>

    切换分支:git checkout <name>

    创建+切换分支:git checkout -b <name>

    合并某分支到当前分支:git merge <name>

    删除分支:git branch -d <name>

 

三、解决冲突

  

 

posted @ 2018-03-19 13:19  一纸流年  阅读(181)  评论(0编辑  收藏  举报