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

Git 还原所有特定于分支的更改,以便分支反映主,git,Git,是否可以在不丢失历史记录的情况下恢复对特定分支所做的所有更改 我很久以前分支了master以隐藏特定功能,但现在这个分支必须与master相同,但我需要完整的分支历史 master->branched->(还原剥离)->branched=master 分支现在应该反映主控,尽管我希望在分支中进行提交,并提供到达主控所需的所有更改 我能想到的最简单的方法是复制主文件的源文件,并在分支的中删除/粘贴文件,但我担心的是,在以后从主文件合并时,这是否会产生冲突?您可以尝试在挤压模式下从主文件还原和重定基

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

我很久以前分支了master以隐藏特定功能,但现在这个分支必须与master相同,但我需要完整的分支历史

master->branched->(还原剥离)->branched=master

分支现在应该反映主控,尽管我希望在分支中进行提交,并提供到达主控所需的所有更改


我能想到的最简单的方法是复制主文件的源文件,并在分支的中删除/粘贴文件,但我担心的是,在以后从主文件合并时,这是否会产生冲突?

您可以尝试在挤压模式下从主文件还原和重定基址

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

然后,您将在附属分支上获得1个提交,其中包含自分支拆分以来主分支的所有更改

git checkout topicbranch
git rebase -i master
并为每次提交选择挤压。

编辑: 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
挤压提交,然后在分支上应用结果
分支

$ git checkout branched
$ git checkout -b tmpbranch
$ git format-patch -R master..branched --stdout | git am
$ git checkout branched
$ git merge tmpbranch
$ git branch -d tmpbranch
  • 从分支的
    开始创建新分支

    $ git checkout branched
    $ git checkout -b tmpbranch
    
    $ git format-patch -R master..branched --stdout | git am
    
    $ git checkout branched
    $ git merge tmpbranch
    $ git branch -d tmpbranch
    
  • 主机
    分支
    之间应用反向提交:

    $ git checkout branched
    $ git checkout -b tmpbranch
    
    $ git format-patch -R master..branched --stdout | git am
    
    $ git checkout branched
    $ git merge tmpbranch
    $ git branch -d tmpbranch
    
  • 将提交压缩为单个提交:

    $ 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.
    
  • 然后将临时分支合并并删除到分支上:

    $ git checkout branched
    $ git checkout -b tmpbranch
    
    $ git format-patch -R master..branched --stdout | git am
    
    $ git checkout branched
    $ git merge tmpbranch
    $ git branch -d tmpbranch
    

  • 这似乎是我正在寻找的,但它一直告诉我“-m”标志丢失了。如何获得相应的家长号码?它不允许我使用我理解为第一个给定分支的“1”。