为了账号安全,请及时绑定邮箱和手机立即绑定

GitHub再探,多人协作怎么用?

标签:
Java

1 主仓库建立分支

首先在主分支上建立一个分支,就起名为firstbranch吧。


webp

2 协作者fork主仓库

然后用另一个GitHub账号左上角搜索框搜索TestForGit仓库,然后右上角点击Fork,就会把该仓库复制到你的GitHub账户中。


webp


协作者打开自己主页,可以看到已经复制了一个同样的TestForGit仓库。


webp

协作者复制自己仓库的网址,找个位置clone一下就可以复制到本地了。

git clone https://github.com/LoserAndSeeker/TestForGit.git

webp


webp

3 问题之fork后与主仓库(原仓库)同步

这时候我们面临一个问题,你Fork之后你的远程仓库和原仓库并不会同步的,也就是说如果在你在本地修改的这段时间原仓库有了更新,你与原仓库的合并就会出现很多问题。
GitHub网页版并没有提供同步的功能服务,据说GitHub的桌面端有提供这种功能,但我没有用过。
经过多方查找资料我找到了两种方法可以让fork后的仓库与原仓库同步:
方法一  clone大法
协助者先把自己本地修改的仓库上传到协助者GitHub或者建立一个分支,然后去clone原仓库的最新版本网址,复制到本地。
本地于是有了同一个项目的两个版本,一个是你的,一个是原仓库最新的。你可以将其与自己修改的分支合并,或者Git pull你的远程仓库让其合并。
而别人GitHub上clone下来的仓库是无法push的,你可以输入:

git remote -v

这样可以查看到你的仓库是跟哪个远程仓库绑定的,


webp


这是协助者的界面,却依旧可以看出远程仓库地址是是原仓库


webp


这时候你可以打开项目地址,进入.git下的config配置文件,

webp


webp


在箭头所指位置添加你的GitHub账号密码,然后把网址后面的用户名仓库名都改成你的,就可以将该仓库指向作为协作者的你的远程仓库了。


webp


然后你再在Git bash 中输入“git remote -v”命令会发现,该仓库的指向已经变成你的了。
然后你就可以在本地修改了再push了,不过这种办法只适用一两次的更新操作,而且特别,,,怎么说呢,傻,所以我还是推荐下面的第二种。

方法二 fetch大法
第一步  配置原仓库路径

git remote add upstream https://github.com/原仓库用户名/原仓库名.git

然后你可以继续输入:

git  remote -v

然后便可以看到你的远程仓库已经多了一个原仓库地址。

第二步  抓取原仓库的修改文件

git fetch upstream

输入这条语句后,本地的Git就会自动抓取你配置的的原仓库最新版本文件,你接下来便可以将你本地的版本与原仓库最新版本合并。
但在合并之前最好将你本地的分支切换到主分支master。

git checkout master

第三步 合并远程原仓库的master分支

git merge upstream/master

到这个时候,你的本地仓库便已经与fork的原仓库完全同步了。当然,合并过程中可能会有冲突,解决后继续合并就是了。

4 协作者本地开发后,上传协作者远程仓库

协助者在自己的电脑上为项目添加了新的代码或文件,怎么将这些更新推送到原仓库上呢?在没有添加SSH秘钥的情况,首先你要将自己的最新版本提交到自己的远程仓库。
现在协助者在TestForGit项目里新加了一个NewDocument.txt的文件,里面写了一句话。


webp


然后push四连到协助者的GitHub上。

git add .
git commit -m "NewDocument"git pull
git push

webp

webp

5 协作者远程仓库pull request到主仓库分支

现在协作者上已经有了新的修改,怎么才能把这个修改提交到原仓库上去呢?
这就要用到GitHub的pull request功能了。


webp


协作者在自己的GitHub上依次点击pull request和New pull request,新建一个合并请求。


webp


然后点击那个绿色的Create new request按钮,在输入备注信息后确认就可以了。

webp

6 主仓库分支与master合并

现在我们回到主分支的视角,在原仓库的GitHub还是那个可以看到收到了一条pull request的信息。


webp


我们点进去看一下,


webp


webp


可以看到已经收到了协作者发来的合并请求,信息表明了是LoserAndSeeker:master想要与主仓库lonelywilliam:firstbranch分支进行合并。

并且GitHub自动判断这个协助者分支与想要合并的原仓库分支没有冲突,你点一下Merge pull request 就会自动合并了。
不过先别急着点,主分支也要先确定一下协助者想要合并什么内容吧?万一不是自己想要的可不行,


webp

然后确定这个请求可以接收后,点击之前绿色按钮Merge pull request,再填上备注后确认就可以自动合并了。


webp


webp

之后再回到原仓库的firstbranch分支,可以看到,已经新添了一个NewDocument文件,还有之前的提交记录。

7 原仓库的firstbranch与master分支合并

在上面那张图片可以看到,firstbranch分支旁边有一个New pull request按钮,点击这个按钮就可以让原仓库的分支与master主分支合并了。


webp



作者:道貌岸然的鬼
链接:https://www.jianshu.com/p/f5e831a01624


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消