我很想知道你是否可以以及如果将提交合并到我的孤儿分支中是否有任何问题。对于此特定实例,我的Salesforce存储库具有主分支和预发布分支,但由于我们的沙箱环境通常具有不属于生产的元数据,但我们希望对其进行版本控制,但与我们的干净预发布分支分开。< / p>
因此,我们有以下内容:
(Production Init Commit) (official release)
/ /
o-------------------------o [master]
\ /
o------o---------o----o [pre-release]
\ /
o-----O [feature]
\ <-- IS THIS ALLOWED/POSSIBLE/BAD IDEA?
\
o------------O [DEV] (orphan branch)
/
(Initial commit from our sandbox environment)
答案 0 :(得分:20)
使用git 2.9(2016年6月),仍然可以合并孤立分支,但使用--allow-unrelated-histories
选项:
git merge --allow-unrelated-histories a b
commit e379fdf见Junio C Hamano (gitster
)(2016年3月18日)
(由Junio C Hamano -- gitster
--于commit d04aa7e合并,2016年4月8日)
merge:默认情况下拒绝创建太酷的合并
虽然允许合并两个不相关的历史是有意义的 以"
gitk
" was merged to "git
" itself aka "the coolest merge ever",这样的合并方式独立开始的项目 仍然是一个不寻常的事件 更糟糕的是,如果某人通过从已建立项目的tarball开始创建独立历史记录并向原始项目发送拉取请求,那么#34;git merge
&#34;然而,幸福地创造了这样一个合并,没有任何不寻常的事情发生的迹象。教#34;
git merge
&#34;拒绝默认创建这样的合并, 除非用户传递了新的&#34;--allow-unrelated-histories
&#34;选项 告诉它用户知道两个不相关的项目 合并。因为这样一个&#34;两个项目合并了#34;是一种罕见的事件,一种配置 不添加总是允许这种合并的选项。
默认情况下,
git merge
命令拒绝合并不共享共同祖先的历史记录。当合并两个独立开始的项目的历史时,此选项可用于覆盖此安全性 由于这是一个非常罕见的场合,默认情况下不存在任何默认启用的配置变量,并且不会添加,本文档顶部的选项列表未提及此选项。
此外,git pull
未将此选项向下传递至git merge
(相反,您git fetch
首先检查您要合并的内容,然后使用此选项检查本地git merge
。
commit de22496见Junio C Hamano (gitster
)(2016年4月21日)
(由Junio C Hamano -- gitster
--合并于commit 175008d,2016年4月29日)
pull
:将--allow-unrelated-histories
传递给&#34;git merge
&#34;而不是:
git fetch something &&
git merge --allow-unrelated-histories FETCH_HEAD
如果有人倾向于添加这样的选项,请更新此测试 变化需要调整回:
git pull --allow-unrelated-histories something
答案 1 :(得分:9)