Git - 使用旧提交从 master 分支

Git - Branching from master using old commit

假设我的提交图看起来像这样:

1 -- 2 -- 3 -- 4
               |
             master

现在,我想使用提交 #2 从 HEAD 分支,即我想要类似的东西

              branch
                 |
                 5
                /
1 -- 2 -- 3 -- 4
               |
             master

但我希望提交 #5 反映提交 #2 中文件的状态。

这可能吗?

谢谢

取决于您是否希望您的新提交包含与 #2 相同的更改(如果可能;可能存在阻止这种情况的合并冲突):

git checkout -b branch
git cherry-pick hashOfSecondCommit

或者您是否希望所有文件看起来与#2 时的完全一样:

git checkout -b branch hashOfSecondCommit
git reset --soft master
git commit

cherry-pick 所做的是 "replay" 另一个提交,reset --soft 更改 "active" 提交的内容而不更改工作目录中的文件(与checkout).

除了@AasmundEldhuset 的 git cherry-pick,您还可以使用 git rebase。

git rebase --onto 2 4 5

看来要删除新分支中的 3 和 4。