天天看点

Mac中Git的简单实用(7) --- 多人协作使用

今天我来介绍下Git,Git是一款免费、开源的分布式版本控制系统。
我们在上一个学习了Git的Fast-forward模式、保存恢复现场  、测试的feature分支。
这一章,我们要学习Git的远程库的信息、推送分支、。
           

Mac中Git的简单实用(1) — Git基本命令(1)

Mac中Git的简单实用(2) — Git基本命令(2)

Mac中Git的简单实用(3) — Github远程仓库

Mac中Git的简单实用(4) — 分支branch管理

Mac中Git的简单实用(5) — Git分支冲突管理

Mac中Git的简单实用(6) — 分支管理策略

1、查看远程库的信息

当你从远程仓库克隆时,实际上Git自动把本地的分支和远程的分支对应起来了,
并且,远程仓库的默认名称是origin。
我们通过remote命令查看远程库的信息:
bogon:git qiuyu$ git remote
origin
显示了可以抓取和推送的origin的地址。如果没有推送权限,就看不到push的地址
bogon:git qiuyu$ git remote -v
origin  [email protected]:QyMars/git.git (fetch)
origin  [email protected]:QyMars/git.git (push)
           

2、推送分支

推送分支,就是把该分支上的所有本地提交推送到远程库。推送时,要指定本地分支,
这样,Git就会把该分支推送到远程库对应的远程分支上:
$ git push origin master

如果要推送其他分支,比如***,就改成:
$ git push origin ***
           

但是,并不是要把所有本地分支推送到远程:

master分支:是主分支,因此要时刻与远程同步;
    开发分支:所有成员都需要在上面工作,所以也需要与远程同步;
    bug分支:只用于在本地修复bug,就没必要推到远程了;
    feature分支是否推到远程,取决于你是否和你的同伴合作在上面开发。
           

总之,就是在Git中,分支完全可以放本地,是否推送,完全由你决定!

3、pull分支

在多人协作的时候,所有人都会把master和开发分支上推送各自的修改。

为了更好的模拟,我们可以在另一台电脑(注意要把SSH Key添加到GitHub)

或者同一台电脑的另一个目录下克隆。

我们先创建一个git文件夹,并初始化init:
           
Mac中Git的简单实用(7) --- 多人协作使用
Mac中Git的简单实用(7) --- 多人协作使用
进行克隆:
    bogon:git2 qiuyu$ git clone [email protected]:QyMars/git.git
    正克隆到 'git'...
    Warning: Permanently added the RSA host key for IP address '192.30.252.131' to the list of known hosts.
    remote: Counting objects: 32, done.
    remote: Compressing objects: 100% (12/12), done.
    remote: Total 32 (delta 7), reused 31 (delta 6), pack-reused 0
    接收对象中: 100% (32/32), 完成.
    处理 delta 中: 100% (7/7), 完成.
    检查连接... 完成。
           

当你从远程库clone时,默认情况下,你只能看到本地的master分支

bogon:git qiuyu$ git branch
* master
           

现在,你要在dev分支上开发,就必须创建远程origin的开发分支到本地,于是他用这个命令创建本地开发分支:

Mac中Git的简单实用(7) --- 多人协作使用

现在,可以在dev上继续修改,然后,也可把dev分支push到远程:

Mac中Git的简单实用(7) --- 多人协作使用

这时候你的同伴已经向origin/dev分支推送了他的提交,而碰巧你也对同样的文件作了修改,并试图推送:

Mac中Git的简单实用(7) --- 多人协作使用

推送失败,因为你的同伴的最新提交和你试图推送的提交有冲突,

解决办法也很简单,先用git pull把最新的提交从origin/dev抓下来,然后,在本地合并,解决冲突,再推送:

Mac中Git的简单实用(7) --- 多人协作使用

查看上面的提示信息,是没有指定本地dev分支与远程origin/dev分支的链接,

根据提示设置dev和origin/dev的链接:

Mac中Git的简单实用(7) --- 多人协作使用

再pull:

Mac中Git的简单实用(7) --- 多人协作使用

如果是同名文件,则参考冲突管理解决

Mac中Git的简单实用(5) — Git分支冲突管理