git | 多人协作

当你从远程仓库克隆时,实际上Git自动把本地的master分支和远程的master分支对应起来了,并且,远程仓库的默认名称是origin
1.要查看远程库的信息 使用git remote
2.要查看远程库的详细信息 使用git remote –v

查看远程库

上面显示了可以抓取和推送的origin的地址。如果没有推送权限,就看不到push的地址。

推送分支

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

$ git push origin master

比如我现在的github上的readme.txt文件内容如下:

github上的readme.txt的内容如图

本地是这样的:


这是本地的内容

现在我想把本地更新的readme.txt代码推送到远程库中,使用命令如下:

$ git push origin master

【这是我出现的问题】


我在push的途中出现问题了,文件有修改冲突

后来在网上查看,修改了两者的冲突之后,用git push -f origin master强制推送上去。(网上说的其他方法有用过,什么pull之后fench之类的,但是不起作用,目前看来直接强推反而起作用了。可能是自己实践不到位)

强制推送

我们可以看到如上,推送成功,我们可以继续来截图github上的readme.txt内容 如下:

成功推送了内容

可以看到推送成功了,如果我们现在要推送到其他分支,比如dev分支上,我们还是那个命令

git push origin dev

但是,并不是一定要把本地分支往远程推送,那么,哪些分支需要推送,哪些不需要呢?
1.master分支是主分支,因此要时刻与远程同步;
2.dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步;
3.bug分支只用于在本地修复bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个bug
4.feature分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发。

抓取分支

多人协作时,大家都会往masterdev分支上推送各自的修改。
现在,模拟一个你的小伙伴,可以在另一台电脑(注意要把SSH Key添加到GitHub)或者同一台电脑的另一个目录下克隆,新建一个目录名字叫testgit2:

克隆远程库到testgit2上来
本地有克隆的learngit这个库的内容了

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

$ git checkout -b dev origin/dev
完整操作
这是还未push新改的dev分之前的内容
刚刚push之后远程dev分支的内容

小伙伴们已经向origin/dev分支上推送了提交,而我在我的目录文件下也对同样的文件同个地方作了修改,也试图推送到远程库时,如下:

自己修改推送同一个文件时报错

由上面可知:推送失败,因为我的小伙伴最新提交的和我试图推送的有冲突,解决的办法也很简单,上面已经提示我们,先用git pull把最新的提交从origin/dev抓下来,然后在本地合并,解决冲突,再推送。

pull失败了

git pull也失败了,原因是没有指定本地dev分支与远程origin/dev分支的链接,根据提示,设置devorigin/dev的链接:

$ git branch --set-upstream dev origin/dev
这张图是别人的

【这张图是别人的,因为我自己操作的时候,不知道怎么跳转到unix界面去了,导致无法同步了,我重新进去的时候提示我自己的dev分支能够直接push。。。(迷)然后我模拟testgit2那边push dev分支,可能是由于设置过dev链接的原因,直接pull成功了,就是告诉有冲突】

这张是自己反向模拟的,意思就是假设自己已经推送完成,用同事的电脑再来推送同一个文件

上面两图都告知我们merge conflict有冲突,需要手动解决,解决的方法和分支管理中的解决冲突完全一样。解决后,提交,再push

冲突内容
这时推送成功了

小结

因此,多人协作的工作模式通常是这样:
1.首先,可以试图用 git push origin branch-name推送自己的修改;
2.如果推送失败,则因为远程分支比你的本地更新早(别人已经先push上去过了),需要先用git pull试图合并。
3.如果合并有冲突,则需要解决冲突,并在本地提交(也就是add+commit)。没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!。
4.如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name

这就是多人协作的工作模式,一旦熟悉了,就非常简单。

-查看远程库信息,使用git remote -v
-本地新建的分支如果不推送到远程,对其他人就是不可见的;
-从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;
-在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;
-建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name
-从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,014评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,796评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,484评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,830评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,946评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,114评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,182评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,927评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,369评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,678评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,832评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,533评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,166评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,885评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,128评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,659评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,738评论 2 351

推荐阅读更多精彩内容

  • 当你从远程仓库克隆时,实际上Git自动把本地的master分支和远程的master分支对应起来了,并且,远程仓库的...
    myang199088阅读 782评论 1 5
  • 1. 安装 Github 查看是否安装git: $ git config --global user.name "...
    Albert_Sun阅读 13,648评论 9 163
  • 1.git的安装 1.1 在Windows上安装Git msysgit是Windows版的Git,从https:/...
    落魂灬阅读 12,656评论 4 54
  • 我有一个优点,就是总觉得自己才17岁,哪怕我已经工作了12年,结婚11年,有了两个孩子。 我很现实主义,总是尽力走...
    慢妈爱绿呀阅读 267评论 2 3
  • 第二章 陌生,你好。 生活中总有许多的小确幸,在我们最不注意的角落里等待着和我们相遇。 你说,是吗? 人生中...
    3ba6a32d0443阅读 174评论 0 0