github多人协作

创建github的仓库

1.注册个帐号

2.创建一个仓库

3.创建一个ssh key:

在自己的虚拟机上生成一个key:
ssh-keygen
一路回车就好。
cat ~/.ssh/id_rsa.pub
这个就是那个key,填到git上面:

4. 把仓库checkout到本地,修改的话用ssh的方式,http是只读的:
git clone git@github.com:winlinvip/simple-rtmp-server.git
换成你自己的帐号。

5. 提交代码到本地仓库:
git commit -a -m "xxxxx"

6. 提交到服务器仓库:
git-push

7. 从服务器更新:
git-pull

为现有仓库贡献代码

1. 在别人的分支(主干)上点fork,就把这个分支fork到自己的账户下了。
譬如:
https://github.com/winlinvip/simple-rtmp-server
fork到winterserver的帐号下面:
https://github.com/winterserver/simple-rtmp-server
自己的仓库里就会显示下图:


2. clone到本地,修改代码,提交到本地仓库,提交到服务器仓库。和前面讲的一样。

3. 譬如:
https://github.com/winterserver/simple-rtmp-server
我在这个分支里修改了Readme,加了Authors,已经提交到了winterserver的服务器仓库。

4. 在自己的分支上点compare,就可以看到和主干的区别:



5. 假设主干也做了修改,有冲突。主干的修改如下:

那么winterserver不用管,直接提交pull request就可以,主干会处理冲突。

主干合并fork的修改

前面提到winterserver fork了主干的分支,并提交了修改。
主干会收到修改,并发现有冲突不能直接合并。

1.主干winlinvip收到pull request,在界面可以看到有一个合并请求。并且不能直接合并,有冲突:

2. 点use the command line,可以看到合并的命令:

3. 照上面的这些命令做,显示冲突的地方是:
<<<<<<< HEAD
### Author
winlin(winterserver): [http://blog.csdn.net/win_lin](http://blog.csdn.net/win_lin)
=======
### Authors
winlin: http://blog.csdn.net/win_lin
>>>>>>> aacaf3be5f70340964e7b50bf5dd9ab1151d192e
4. 解决然后提交就好了:
 git commit -a -m "merge from winterserver"

5. 显示当前的分支:
[winlin@dev6 simple-rtmp-server]$ git branch
  master
* winterserver-master

6. 然后切换到master,合并这两个分支就好了:
[winlin@dev6 simple-rtmp-server]$ git checkout master
Switched to branch 'master'
[winlin@dev6 simple-rtmp-server]$ git branch
* master
  winterserver-master
[winlin@dev6 simple-rtmp-server]$ git merge winterserver-master
Updating cabf6e0..d5925fe
Fast-forward
 README.md |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

7.显示合并完成:

8. 合并完成后,winterserver的仓库不会自动更新。winterserver需要更新自己的仓库。

fork分支合并主干

winterserver fork了winlinvip的分支,前面已经提交了pull request,主干已经完成了合并。
现在winterserver需要将主干合并到自己的分析。

1. 可以在本地仓库看到仓库的源:
[winlin@demo simple-rtmp-server]$ git remote -v
origin	git@github.com:winterserver/simple-rtmp-server.git (fetch)
origin	git@github.com:winterserver/simple-rtmp-server.git (push)

2. 若没有主干,需要把主干添加进来:
[winlin@demo simple-rtmp-server]$ git remote add upstream https://github.com/winlinvip/simple-rtmp-server.git
[winlin@demo simple-rtmp-server]$ git remote -v
origin	git@github.com:winterserver/simple-rtmp-server.git (fetch)
origin	git@github.com:winterserver/simple-rtmp-server.git (push)
upstream	https://github.com/winlinvip/simple-rtmp-server.git (fetch)
upstream	https://github.com/winlinvip/simple-rtmp-server.git (push)

3. 更新主干的数据:
[winlin@demo simple-rtmp-server]$ git fetch upstream
remote: Counting objects: 15, done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 9 (delta 6), reused 7 (delta 4)
Unpacking objects: 100% (9/9), done.
From https://github.com/winlinvip/simple-rtmp-server
 * [new branch]      gh-pages   -> upstream/gh-pages
 * [new branch]      master     -> upstream/master

4. 查看本地所有的分支:
[winlin@demo simple-rtmp-server]$ git branch -va
* master                    aacaf3b update readme
  remotes/origin/HEAD       -> origin/master
  remotes/origin/gh-pages   b3ef9a1 Create gh-pages branch via GitHub
  remotes/origin/master     aacaf3b update readme
  remotes/upstream/gh-pages b3ef9a1 Create gh-pages branch via GitHub
  remotes/upstream/master   d5925fe merge from winterserver

5. 切换到自己的仓库的master:
git checkout master

6. 合并主干的master到自己的master:
[winlin@demo simple-rtmp-server]$ git merge upstream/master
Updating aacaf3b..d5925fe
Fast-forward
 README.md |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

7. 然后git push提交就好了。

一般只需从第3步开始即可。


其他帮助:
https://help.github.com/
https://help.github.com/categories/63/articles

分支操作

查看分支:

[winlin@dev6 simple-rtmp-server.bk]$ git branch -va
  gh-pages                38da587 rm cached Raspbian7 package.
* master                  d1b0d26 change release url to project https://github.com/winlinvip/srs.release
  remotes/origin/HEAD     -> origin/master
  remotes/origin/gh-pages 38da587 rm cached Raspbian7 package.
  remotes/origin/master   d1b0d26 change release url to project https://github.com/winlinvip/srs.release

可以删除本地checkout的分支:

[winlin@dev6 simple-rtmp-server.bk]$ git branch -d gh-pages
[winlin@dev6 simple-rtmp-server.bk]$ git branch -va
* master                  d1b0d26 change release url to project https://github.com/winlinvip/srs.release
  remotes/origin/HEAD     -> origin/master
  remotes/origin/gh-pages 38da587 rm cached Raspbian7 package.
  remotes/origin/master   d1b0d26 change release url to project https://github.com/winlinvip/srs.release

删除本地的remotes分支:

[winlin@dev6 simple-rtmp-server.bk]$ git branch -d -r origin/gh-pages
[winlin@dev6 simple-rtmp-server.bk]$ git branch -va
* master                d1b0d26 change release url to project https://github.com/winlinvip/srs.release
  remotes/origin/HEAD   -> origin/master
  remotes/origin/master d1b0d26 change release url to project https://github.com/winlinvip/srs.release


Github同步外部分支

譬如将github上的srs在csdn上fork一套,github/srs => csdn/srs.csdn,然后checkout到本地:

git clone git@code.csdn.net:winlinvip/srs-csdn.git

然后创建同步的upstream和分支:

git remote add upstream https://github.com/winlinvip/simple-rtmp-server.git
git fetch upstream
git checkout upstream/master -b srs.master

然后同步:

git checkout srs.master &&
git pull &&
git checkout master &&
git merge srs.master &&
git push

如此,每次只要执行个脚本就能同步了。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

winlinvip

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值