还原所有分支特定的更改,以便分支反映主数据

时间:2015-04-21 09:31:45

标签: git

是否可以在不丢失历史记录的情况下还原对特定分支所做的所有更改?

我很久以前分支master来隐藏特定的功能但是现在这个分支必须和master一样,但我需要分支历史记录完整。

master -> branched -> (revert stripping) -> branched = master

分支现在应该反映,虽然我想在分支中提交,但需要进行所需的所有更改主

我能想到的最简单的方法是复制的来源并删除/粘贴分支中的文件,但我担心的是,如果以后合并会产生冲突来自大师?

2 个答案:

答案 0 :(得分:1)

编辑:

Preuk的解决方案对我不起作用(Git 2.2.1),但这些命令有效:

$ git checkout branched
$ git revert -n master..branched
$ git commit -m "Revert to master"

首发帖子:

我建议在专用分支上使用git format-patch后跟git am,使用git rebase -i压缩提交,然后将结果应用于分支branched:< / p>

  1. branched开始创建新分支:

    $ git checkout branched
    $ git checkout -b tmpbranch
    
  2. masterbranched

    之间应用反向提交
    $ git format-patch -R master..branched --stdout | git am
    
  3. 将提交压缩为一个:

    $ git rebase -i branched
    $ # Use the squash command for all commits except the first one
    $ # and set the log message to "Revert to master" for instance.
    
  4. 然后将临时分支tmpbranch合并并删除到branched

    $ git checkout branched
    $ git merge tmpbranch
    $ git branch -d tmpbranch
    

答案 1 :(得分:0)

您可以尝试在壁球模式下从母版恢复和重新定位。

首先,您需要从一开始就恢复特定于您的分支的提交。为此,请使用this

之类的内容
git revert OLDER_COMMIT^..NEWER_COMMIT

然后,您将在您的卫星分支上获得1次提交,其中包含自分支拆分以来所有来自master的更改。

git checkout topicbranch
git rebase -i master

并为每次提交选择壁球。