我有一些提交:
- 1 - 2 - 3 - 4 - 5 (HEAD, master)
Run Code Online (Sandbox Code Playgroud)
之后我注意到Commits 2和3真的应该已经在他们自己的分支上.它们完全独立于提交4和5我可以使用git rebase吗?
- 1 - 4 - 5 (HEAD, master)
\
2 - 3 (TestBranch)
Run Code Online (Sandbox Code Playgroud)
最重要的是,SHA1s是否会Commit 2和Commit 3rebase之前保持一致?
首先,请注意您所需的TestBranch仅指向当前提交3; 你不需要做任何事情,git branch TestBranch <commit 3>只能做到这一点.请记住,分支只是提交的指针.这应该回答你关于提交2和3的SHA1的问题.你没有改变那些提交,所以它们的SHA1当然是相同的.
要让你当前的分支(主)在你想要的地方(提交1,4,5),你确实会变基.这是一个非常简单的交互模式.第一次运行:
git rebase -i <commit 1> master # -i is a synonym for --interactive
Run Code Online (Sandbox Code Playgroud)
Git将启动您的编辑器,并向您展示自主分支(2,3,4,5)上的提交1以来的所有提交,以及有关如何执行操作的一些提示.您只需要删除提交2和3的行,然后保存并退出.然后它会应用剩下的东西(4和5),留下你想要的东西.当然,如果提交4和5依赖于提交2或3,当git尝试在rebase期间应用其补丁时,您将会遇到合并冲突.
请注意,这将更改提交4和5的SHA1,因为提交的SHA1取决于其父级.这会让那些拉动那个分支的人感到困惑.(你已被警告过.)你的实际最终结果将更准确地描述如下:
- 1 - 4' - 5' (HEAD, master)
\
2 - 3 (TestBranch)
Run Code Online (Sandbox Code Playgroud)
提交4'和5'具有与提交4和5相同的差异,但具有不同的父级,因此它们是不同的提交.
| 归档时间: |
|
| 查看次数: |
1636 次 |
| 最近记录: |