我想知道更多关于分叉一个github项目与创建一个github项目的分支的优点和缺点。
分叉使我的项目版本与原始版本更加隔离,因为我不必在原始项目的合作者列表中。因为我们在内部开发一个项目,所以增加合作者是没有问题的。但是,我们想要了解的是,分支一个项目是否会使合并变更更难回到主项目。也就是说,我想知道分支是否能使两个项目更容易保持同步。换句话说,当我进行分支时,是否更容易在我的主项目版本和主项目版本之间合并和推动更改?
它与Git的一般工作流程有关。您不太可能直接推送到主项目的存储库。我不确定GitHub项目的存储库是否支持基于分支的访问控制,因为你不会想授予任何人推送到主分支的权限。
一般模式如下:
如果没有这一点,公共项目让任何人直接推动他们自己的提交是很不寻常的。
您不能总是创建一个分支或拉出一个现有的分支并将其推回,因为您没有注册为该特定项目的合作者。
fork只不过是一个克隆在GitHub服务器端:
您可以通过以下方式保持fork与原始项目同步:
rebase允许您确保您的更改是直接的(没有合并冲突需要处理),当您希望原始项目的维护者将您的补丁包含在他的项目中时,使您的拉取请求更加容易。
目标是允许协作,尽管直接参与并不总是可能的。
git pull --rebase upstream
git push --force origin
参见:
以下是高层次的差异:
fork从现有的存储库创建一个全新的存储库(简单地在gitHub/bitbucket上克隆git)
最好使用分叉:当“分裂”的目的是创建一个逻辑上独立的项目时,该项目可能永远不会与其父项目合并。
分支策略在现有/正在工作的存储库之上创建一个新的分支
最好使用分支:当它们被创建为处理某个特性的临时场所时,目的是将分支与起源合并。
更具体:- 在开源项目中,由存储库的所有者决定谁可以推送到存储库。然而,开源的理念是每个人都可以为项目做出贡献
这个问题可以通过分叉来解决:任何时候开发人员想要改变开源项目中的某些东西,他们都不会直接克隆官方存储库。相反,他们用分叉来创建一个副本。当工作完成时,他们发出拉取请求,以便存储库的所有者可以检查更改并决定是否将它们合并到他的项目中。
在其核心上,分叉类似于特性分支,但不是创建分支,而是创建存储库的分叉,并且不是执行合并请求,而是创建拉请求。
下面的链接很好地解释了两者的区别:
https://blog.gitprime.com/the-definitive-guide-to-forks-and-branches-in-git/
< a href = " https://buddy。工作/博客/ 5-types-of-git-workflows noreferrer“rel = > https://buddy.works/blog/5-types-of-git-workflows < / >
http://www.continuousagile.com/unblock/branching.html