一、从远程库克隆
前面学习:先有本地库,后有远程库,如何关联远程库。
现在,假设我们从零开发,那么最好的方式是先创建远程库,然后,从远程库克隆。
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>
三、解决冲突