`git rebase` 没有更新分支?
`git rebase` not updating branch?
我有这个:
master
| foo
| |
v v bar
A---B---C---D |
\ v
\---E---F---G
我想要这个:
master
| foo
| |
v v bar
A---B---C---D |
\ v
\---E---F---G
所以我认为我需要做的:
git checkout bar
git rebase master
但Git不这么认为:
Current branch bar is up-to-date.
一切保持原样。
我需要什么才能运行让Git做我想做的事?
提交 D
包含在分支 bar
中。一种选择是执行 interactive rebase 并从分支 bar
.
中删除提交 D
git checkout bar
git rebase -i master
- 在文本编辑器中删除提交行
D
- 保存并关闭
只要您在提交 D
(或包括提交 D
)(例如 foo
)上有标记或分支,您就不应该丢失它。还请记住,如果 D
之后的提交取决于 D
中的更改,您将遇到冲突。
您正在执行的 git rebase
版本,获取分支 bar
上尚未在 master
上的所有提交,并将它们写入 master
.这是 D
到 F
的提交,这不是您想要的,因为它不会跳过提交 D
。一种解决方案是使用 --onto
标志:
git checkout bar
git rebase --onto master foo
此版本的 rebase 将获取分支 bar
上而非分支 foo
上的所有提交,并将它们重写到 master
上。这将准确地生成您想要的 bar
的历史记录。
我有这个:
master
| foo
| |
v v bar
A---B---C---D |
\ v
\---E---F---G
我想要这个:
master
| foo
| |
v v bar
A---B---C---D |
\ v
\---E---F---G
所以我认为我需要做的:
git checkout bar
git rebase master
但Git不这么认为:
Current branch bar is up-to-date.
一切保持原样。
我需要什么才能运行让Git做我想做的事?
提交 D
包含在分支 bar
中。一种选择是执行 interactive rebase 并从分支 bar
.
D
git checkout bar
git rebase -i master
- 在文本编辑器中删除提交行
D
- 保存并关闭
只要您在提交 D
(或包括提交 D
)(例如 foo
)上有标记或分支,您就不应该丢失它。还请记住,如果 D
之后的提交取决于 D
中的更改,您将遇到冲突。
您正在执行的 git rebase
版本,获取分支 bar
上尚未在 master
上的所有提交,并将它们写入 master
.这是 D
到 F
的提交,这不是您想要的,因为它不会跳过提交 D
。一种解决方案是使用 --onto
标志:
git checkout bar
git rebase --onto master foo
此版本的 rebase 将获取分支 bar
上而非分支 foo
上的所有提交,并将它们重写到 master
上。这将准确地生成您想要的 bar
的历史记录。