Git将master合并到orphan而没有提交历史记录

Ale*_*lex 8 git

给定一个orphan没有历史记录的master分支,从创建孤立的那一刻开始,我将如何合并在分支上完成的更改,而不会在远程推送孤立时复制所有提交历史记录.

A <- B <- C <- D  

        orphan(created from state B) <-X <- Y
Run Code Online (Sandbox Code Playgroud)

我想带cd以孤儿分支,然后xy掌握.

如果我做checkout orphan, merge masterrebase master孤儿获得提交,还有所有历史树.例如,当我将孤儿推送到远程服务器时,每个人都能够看到所有master's历史记录.

后来我想合并orphan回主人,带来提交xy那里.

编辑:

现在将孤儿合并到大师的工作正常 git merge

A <- B <- C <- D <------X <- Y
                       /  
        orphan <-X <- Y 
Run Code Online (Sandbox Code Playgroud)

但是,合并masterorphan要么将整个主历史记录放入孤儿(例如X先前B)或樱桃挑选,但我需要跳过合并提交并且还会遇到更多冲突

jth*_*ill 2

移植物正是为此而构建的。

root=$(git rev-list my-orphan-branch --max-parents=0)  # get the orphaned-branch root
echo $(git rev-parse $root B) >.git/info/grafts        # locally remember its real parent
Run Code Online (Sandbox Code Playgroud)

现在所有本地命令都会知道祖先,但它将保留在存储库本地,p​​ush 和 fetch 不会导出它。