使用git rebase跳过/删除提交
假设我有以下承诺:使用git rebase跳过/删除提交,git,Git,假设我有以下承诺: E (HEAD -> dev, origin/dev) | D | C | B | A 现在我想删除或跳过提交B,使其看起来像这样: E (HEAD -> dev, origin/dev) | D | C | A 我可以做git checkout C然后git rebase A?这会得到预期的结果吗。我找不到与你的问题完全相同的答案,所以我冒昧地给出一个答案。这里您需要的工具是交互式重基。从当前分支机构的负责人处运行以下命令: git rebase -i HE
E (HEAD -> dev, origin/dev)
|
D
|
C
|
B
|
A
现在我想删除或跳过提交B,使其看起来像这样:
E (HEAD -> dev, origin/dev)
|
D
|
C
|
A
我可以做
git checkout C
然后git rebase A
?这会得到预期的结果吗。我找不到与你的问题完全相同的答案,所以我冒昧地给出一个答案。这里您需要的工具是交互式重基。从当前分支机构的负责人处运行以下命令:
git rebase -i HEAD~5
这将出现一个屏幕,显示最近的5次提交,看起来像这样(从最早的提交第一次到最新的提交最后一次):
现在保存并关闭编辑器。Git应该自动启动rebase,在本例中,这意味着在新基(即D提交)之上重放C和A提交。您可能会遇到合并冲突,您必须解决这些冲突
请注意,您正在执行的操作对历史记录不太友好,如果您的分支已被其他人使用,则应避免以这种方式重写历史记录。
git rebase-i HEAD~4
,然后删除要跳过的提交?或者您可以还原它,以避免重写历史。这是否回答了您的问题?
pick <SHA-1 for A> commit message for A
pick <SHA-1 for B> commit message for B
pick <SHA-1 for C> commit message for C
pick <SHA-1 for D> commit message for D
pick <SHA-1 for E> commit message for E
pick <SHA-1 for A> commit message for A
pick <SHA-1 for C> commit message for C
pick <SHA-1 for D> commit message for D
pick <SHA-1 for E> commit message for E