rep*_*mer 267 git branch github
我想更多地了解分支github项目与创建github项目分支的优缺点.
分叉使我的项目版本与原始版本更加孤立,因为我不必在原始项目的协作者列表中.由于我们正在内部开发项目,因此将人员添加为协作者是没有问题的.但是,我们想了解如果分配项目会使合并更改回主项目更难.也就是说,我想知道分支是否能让两个项目保持同步更容易.换句话说,当我分支时,在我的主项目版本和主项目之间合并和推送更改是否更容易?
Von*_*onC 274
您不能总是创建分支或拉出现有分支并推回到它,因为您没有注册为该特定项目的协作者.
分叉只不过是GitHub服务器端的克隆:
通过以下方式保持fork与原始项目同步:
rebase允许您确保您的更改很简单(没有要处理的合并冲突),当您希望原始项目的维护者将修补程序包含在他的项目中时,使您的提取请求更加容易.
即使直接参与并非总是可行,但目标仍然是允许协作.
您在GitHub端克隆的事实意味着您现在有两个 "中央"存储库("中心"为"从几个协作者可见").
如果您可以直接将它们添加为一个项目的协作者,则无需管理另一个项目一个用叉子.

合并经验大致相同,但有一个额外的间接水平(先推上叉子,然后要求拉动,原始仓库的进化风险使你的快进合并不再快进) .
这意味着正确的工作流程是git pull --rebase upstream(在上游的新提交之上重新设置您的工作),然后git push --force origin,为了以这种方式重写历史记录,您自己的提交始终位于原始(上游)repo的提交之上.
也可以看看:
Aid*_*man 63
以下是高层差异:
Bru*_*uno 44
它与Git的一般工作流程有关.您不太可能直接推送到主项目的存储库.我不确定GitHub项目的存储库是否支持基于分支的访问控制,因为您不希望授予任何人推送到主分支的权限.
一般模式如下:
如果没有这个,公共项目让任何人直接推送他们自己的提交是很不寻常的.
sri*_*asy 11
Forking 从现有存储库创建一个全新的存储库(只需在 gitHub/bitbucket 上执行 git clone)
最好使用分叉:当“拆分”的目的是创建一个逻辑上独立的项目时,该项目可能永远不会与其父项团聚。
分支策略在现有/工作存储库上创建一个新分支
最好使用分支:当它们被创建为临时位置以处理功能时,意图将分支与原点合并。
更具体:- 在开源项目中,由存储库的所有者决定谁可以推送到存储库。然而,开源的理念是每个人都可以为项目做出贡献。
这个问题是通过 fork 解决的:任何时候开发人员想要改变开源项目中的某些东西,他们都不会直接克隆官方存储库。相反,他们分叉它来创建一个副本。工作完成后,他们会发出拉取请求,以便存储库的所有者可以查看更改并决定是否将它们合并到他的项目中。
其核心分支类似于功能分支,但不是创建分支,而是创建存储库的分支,而不是执行合并请求,而是创建拉取请求。
以下链接以一种很好解释的方式提供了差异:
https://blog.gitprime.com/the-definitive-guide-to-forks-and-branches-in-git/
https://buddy.works/blog/5-types-of-git-workflows
http://www.continuousagile.com/unblock/branching.html