是否可以在不丢失历史记录的情况下还原对特定分支所做的所有更改?
我很久以前分支master来隐藏特定的功能但是现在这个分支必须和master一样,但我需要分支历史记录完整。
master -> branched -> (revert stripping) -> branched = master
分支现在应该反映主,虽然我想在分支中提交,但需要进行所需的所有更改主
我能想到的最简单的方法是复制主的来源并删除/粘贴分支中的文件,但我担心的是,如果以后合并会产生冲突来自大师?
答案 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>
从branched
开始创建新分支:
$ git checkout branched
$ git checkout -b tmpbranch
在master
和branched
:
$ git format-patch -R master..branched --stdout | git am
将提交压缩为一个:
$ 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.
然后将临时分支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
并为每次提交选择壁球。