假设我有一个很久以前的修订版本A,并且它进行了一些理想的更改。
然后,稍后我有了修订版本B,它对许多文件进行了大量更改,包括清除更改A。
现在,很久以后,我想重新应用修订版本A。有没有好的方法来做到这一点?合并和 cherry-pick 命令似乎会跳过祖先修订版本,我也没有看到任何忽略祖先的标志。
总是可以使用 diff/apply,但那是否真的是最好的方法呢?这似乎可能是“有损”的(通过中间的补丁格式),并且可能不允许 Git 使用其通常可用的所有工具... 但这只是我个人的无知猜测。
假设我有一个很久以前的修订版本A,并且它进行了一些理想的更改。
然后,稍后我有了修订版本B,它对许多文件进行了大量更改,包括清除更改A。
现在,很久以后,我想重新应用修订版本A。有没有好的方法来做到这一点?合并和 cherry-pick 命令似乎会跳过祖先修订版本,我也没有看到任何忽略祖先的标志。
总是可以使用 diff/apply,但那是否真的是最好的方法呢?这似乎可能是“有损”的(通过中间的补丁格式),并且可能不允许 Git 使用其通常可用的所有工具... 但这只是我个人的无知猜测。
git cherry-pick A
可以完全满足您的需求。它不考虑祖先-只查看已经应用了哪些更改。
这里有一个例子:
git cherry-pick A
git cherry-pick A
git cherry-pick A
最多只会创建一个新的提交记录。第二和第三条命令不起作用,因为A
的更改已经被应用了。但是,
git cherry-pick A
git cherry-pick B
git cherry-pick A
git cherry-pick B
这将创建四个新的提交。第一个和第三个提交都将完成相同的工作,而第二个和第四个将撤销第一个和第三个(即使提交B
除了撤销A
之外还做了其他更改)。换句话说,这与下面的代码等效:
git cherry-pick A
git revert --no-edit HEAD
git revert --no-edit HEAD
git revert --no-edit HEAD
希望这可以帮到你。
您可以使用 git checkout $REVISION 命令切换回您的修订版(Commit)。然后,您应该从那里创建一个新分支。
git.cmd branch YOURCOMMIT
您可以使用 pickaxe 获取您的新分支所需的提交记录。
git |git| 名词,英国俚语 指一个不愉快或可鄙的人。
这句话的意思是:使用 git 一切皆有可能。 - user142019