Git子树工作流程

| 在我当前的项目中,我正在使用一个开源论坛(https://github.com/vanillaforums/Garden)。我正计划做这样的事情:
git remote add vanilla_remote https://github.com/vanillaforums/Garden.git
git checkout -b vanilla vanilla_remote/master
git checkout master
git read-tree --prefix=vanilla -u vanilla
这样,我可以对vanilla文件夹进行更改(例如更改配置)并将其提交到我的master分支,也可以切换到我的vanilla分支以获取更新。我的问题是当我尝试将分支合并在一起时
git checkout vanilla
git pull
git checkout master
git merge --squash -s subtree --no-commit vanilla
git commit -a -m \"update commit\"
问题是\“ update commit \”放在我的提交之上,而\“ overwrite \”在我的更改之上。我想在更新的基础上重播我的提交。有没有简单的方法可以做到这一点?我的git不太好,所以也许这是错误的方法。另外,我真的不想将自己的历史与原始历史混为一谈。     
已邀请:
        我完成了这个方案: 在我的开发分支上处理来自子树的文件。 用压缩的开发提交更新子树分支:   git merge -s子树--squash --no-commit开发 使用其远程存储库更新子树分支。 用压缩的子树提交更新开发:   git merge --squash -s子树--no-commit子树        
        如果要使用子树,则可能要使用
git subtree
。它为这种事情提供了一个更加用户友好的界面,包括合并/拉命令以合并到子树中(压缩是可选的)和拆分/推命令将拆分的更改拆分回子树并将其发回给自己回购。     
        使用
git merge --squash -s subtree --no-commit vanilla
不会“覆盖”您的更改。我希望通过\“ update commit \\”表示您在子树合并后所做的提交,因为它具有
--no-commit
并且不会自己提交。     
        我也不是git master(请参阅我在那做的事情;-))……但是,我认为您可能希望查看rebase命令: http://book.git-scm.com/4_rebasing.html     

要回复问题请先登录注册