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。
假设我的提交图看起来像这样:
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。