合并两个git分支之间的差异并将其应用于工作副本

合并两个git分支之间的差异并将其应用于工作副本,git,merge,branch,Git,Merge,Branch,我有一个开发存储库和一个部署存储库。部署代码时,代码库从dev签出,rsync'd到部署工作副本,并提交到部署存储库。因此,这些存储库是独立的,但相似 关于dev,我有一个分支。我想将该分支“应用”到部署工作副本。换句话说,我希望将分支上的所有提交(不包括合并)重播到部署存储库(如果可能,在一次提交中),或者在分支和主分支之间进行区分,并将其应用到部署工作副本 我认为类似的svn命令应该是: svn merge $SVN_REPO/trunk $SVN_REPO/branch/dev_branc

我有一个开发存储库和一个部署存储库。部署代码时,代码库从dev签出,rsync'd到部署工作副本,并提交到部署存储库。因此,这些存储库是独立的,但相似

关于dev,我有一个分支。我想将该分支“应用”到部署工作副本。换句话说,我希望将分支上的所有提交(不包括合并)重播到部署存储库(如果可能,在一次提交中),或者在分支和主分支之间进行区分,并将其应用到部署工作副本

我认为类似的svn命令应该是:

svn merge $SVN_REPO/trunk $SVN_REPO/branch/dev_branch deploy_dir
。。。其中deploy_dir甚至不需要是工作副本


这可能吗?

一种方法是从另一个回购协议获取分支:

cd <deploy-path>
git remote add devel <devel-path>
git fetch devel

git cherry-pick devel/master...devel/branch  # Assuming your branch is based on master

只需添加另一个远程存储库并执行定期合并?有一些存储库异常会使这一过程变得复杂,包括错误的重新基址。尝试常规合并几乎会在每个文件上产生冲突。diff/patch方法非常有效,因为我想忽略一些祖先异常。由于添加了一些图像,我使用了git diff--binary c1 c2>之类的东西。有趣的是,没有“git merge--ignore estority”或类似于上面svn命令的东西。@Tim是的,merge不起作用。你应该试试樱桃采摘法。补丁法效果很好!我觉得比较简单。(但保存到主目录,而不是git目录中的某个位置)
git diff commitid1 commitid2 > something.patch
cd deploy
git apply something.patch