当前位置:   article > 正文

Github的Forking工作流, fork + pull request实现协同工作_fork pull request workflows

fork pull request workflows

这个问题和从github上fork了一个仓库后保持与原仓库代码同步的操作方法 其实有很多重复的地方。当然如果这个问题解决了,那么保持与原仓库代码同步的问题也就解决了。

Forking工作流与只有一个中央代码仓库的git工作流完全不同,这种工作流下,每个开发者都有自己的远程仓库和本地仓库。下面用例子具体讲下这种工作流。

比如fork出来的项目命名为EvidenceProof,原项目是bitcoin,则具体操作步骤为:
1.点击github上原项目仓库页面的fork按钮,从原项目仓库fork到自己的仓库,并重命名为EvidenceProof,此时自己的项目仓库的地址是https://github.com/osbc/EvidenceProof
2.将自己的远程仓库clone到本地

git clone https://github.com/osbc/EvidenceProof.git
  • 1

这时可以执行git remote -v命令查看本地仓库对应的远程仓库:

y@ubuntu:~/blockchain/EvidenceProof$ git remote -v
origin  https://github.com/osbc/EvidenceProof.git (fetch)
origin  https://github.com/osbc/EvidenceProof.git (push)
  • 1
  • 2
  • 3

可以看到有只有一个远程仓库。

3.为本地仓库添加一个新的远程仓库,指定名字为upstream,指向原项目仓库,(可参考:.5 Git 基础 - 远程仓库的使用)

git remote add upstream https://github.com/bitcoin/bitcoin.git
  • 1

这时可以再次执行git remote -v命令查看此时本地仓库对应的远程仓库:

y@ubuntu:~/blockchain/EvidenceProof$ git remote -v
origin  https://github.com/osbc/EvidenceProof.git (fetch)
origin  https://github.com/osbc/EvidenceProof.git (push)
upstream    https://github.com/bitcoin/bitcoin.git (fetch)
upstream    https://github.com/bitcoin/bitcoin.git (push)
  • 1
  • 2
  • 3
  • 4
  • 5

可以看到有两个远程仓库了。

4.开发者从本地的dev分支(或者master分支,具体项目有区别,这里以dev分支为例)checkout出一个新的分支用于开发新功能

git checkout -b branch_feature dev
  • 1

进行开发工作…..
开发完成后执行git commit 填写commit信息

5.此时开发者可以执行git push origin branch_feature将自己的分支推到自己的远程仓库,然后发起一个pull request请求将branch_feature分支合并到原仓库的dev分支,一般情况下这样操作可能都没什么问题。
但是这样操作有可能导致原项目的维护者在合并pull request时发现有冲突,会拒绝合并,所以开发者最好是先更新下dev代码,然后再合并branch_feature分支,具体操作是:

git checkout dev  //切到dev分支
git pull upstream dev          //这里upstream就是指原仓库,即从原仓库的dev分支更新本地dev分支
git checkout -b branch_feature_merge dev       //从更新后的dev分支checkout出一个分支用于合并branch_feature分支
git merge branch_feature       //将branch_feature分支合并到branch_feature_merge分支
git branch -m branch_feature_merge branch_feature         //将branch_feature_merge分支重命名为branch_feature
git push origin branch_feature     //推到远程仓库
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

这时再发起一个pull request请求将branch_feature分支合并到原仓库的dev分支,此时是肯定不会有冲突的。

参考:
https://www.atlassian.com/git/tutorials/comparing-workflows
https://github.com/oldratlee/translations/tree/master/git-workflows-and-tutorials

Git工作流指南:Forking工作流
fork一个项目到贡献代码流程

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号