mac*_*ann 14 git version-control merge
假设我有很久以前的修订版A,并做了一个理想的改变.
然后,稍后,我有了修订版B,对许多文件进行了大量更改,包括删除更改A.
现在,很久以后,我想重新应用修订版A.是否有一个好方法可以做到这一点?合并和cherry-pick命令似乎跳过了祖先的修订,我没有看到任何标志来忽略祖先.
总有差异/应用,但那些真的是最好的方式吗?看起来这可能是"有损"(通过中间补丁格式)并且可能不允许git正常使用所有工具......但这对我来说是一个无知的预感.
Mar*_*ato 22
git cherry-pick A会做你想要的.它没有看到祖先 - 它只是看看已经应用了哪些变化.
这是一个例子:
git cherry-pick A
git cherry-pick A
git cherry-pick A
Run Code Online (Sandbox Code Playgroud)
只会创建一个新提交(最多).第二个和第三个命令是no-ops,因为A已经应用了更改.然而,
git cherry-pick A
git cherry-pick B
git cherry-pick A
git cherry-pick B
Run Code Online (Sandbox Code Playgroud)
将创建四个新提交.第一个和第三个提交都将执行相同的操作,而第二个和第四个提交将恢复第一个和第三个(即使提交B进行了其他更改而不是还原A.)换句话说,这是相同的
git cherry-pick A
git revert --no-edit HEAD
git revert --no-edit HEAD
git revert --no-edit HEAD
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助.
And*_*ehm -2
您可以使用 git checkout $REVISION 切换回您的修订(提交)。然后你应该从那里创建一个新分支。
git.cmd branch YOURCOMMIT
Run Code Online (Sandbox Code Playgroud)
您可以使用镐来获取新分支所需的提交。