1. 程式人生 > >Git-使用Rebase合併分支

Git-使用Rebase合併分支

# commit 合併 在開發過程中,可能會出現多個 commit 所涉及的邏輯都是同一個功能模組,此時,會導致 log tree 非常的混亂,不美觀,因此,我們可以將多個 commit 進行合併,變成一條,這樣,也使得 log tree 會更加的簡潔。

首先,先確定的是,我們合併 commit 使用的是 rebase 命令。 ## command line  首先,找到要操作的 commit 的 前一條的 sha1,然後執行
```java git rebase -i sha1 ```
執行完後,會出現指定 commit 後所有的 commit,然後根據需要將對應的 commit 的操作改為需要的即可。

![image.png](https://cdn.nlark.com/yuque/0/2020/png/1166128/1600074776798-92c8b28b-a08f-4360-8a40-0117a7a5941f.png#align=left&display=inline&height=349&margin=%5Bobject%20Object%5D&name=image.png&originHeight=349&originWidth=772&size=29529&status=done&style=none&width=772)
在這裡,我們分別描述一下這些操作哪些是有用的,以及該如何選擇。
- **pick:保留;** - **reword:保留,但是要修改 commit log;** - **edit:保留,但是會暫停 rebase 操作,讓你修改內容,不止是log;** - **squash:保留,但是會將該 commit 和上一條進行合併,且 commit log 也一起合併了;** - **fixup:保留,但是會將該 commit 和上一條進行合併,但是隻保留上一個 commit log;** - **exec:執行 shell 命令;** - **drop:移除該 commit。**
**一般,我們在使用過程中,使用 pick 和 squash 即可。** ## idea
![image.png](https://cdn.nlark.com/yuque/0/2020/png/1166128/1600074198707-4db0d58a-5982-48d7-be30-9e96099e558f.png)
這裡,假設,我們要把1和2進行合併。

首先,我們複製最後一個 commit 的序列號。

然後點選 vsc - git - rebase
![image.png](https://cdn.nlark.com/yuque/0/2020/png/1166128/1600074255139-7e9dbd89-8e80-427f-85fb-43e133bece1a.png)

將複製的sha1號複製到下圖所示位置中,即可開啟 rebase 的合併圖形介面。
![image.png](https://cdn.nlark.com/yuque/0/2020/png/1166128/1600074320662-1f4a9042-f906-4af0-aedc-496e4bda309f.png)

將需要的 commit 操作改為pick,需要和其上面分支合併到改成 squash 即可。
![image.png](https://cdn.nlark.com/yuque/0/2020/png/1166128/1600074362346-d78a3c70-860a-4024-8d54-97db4857d8d8.png) 最後,點選 rebase 後,會讓我們輸入 commit log,根據世界輸入即可。

在全部合併結束後,需要使用 `git push -f` 進行強制提交即可。 ---------------------------------------------------------------------------------------- ![](https://cdn.nlark.com/yuque/0/2020/jpeg/1166128/1600071237550-30359f9a-9582-44e2-a0e6-49ee404ed5af.jpeg)

文章在公眾號「iceWang」第一手更新,有興趣的朋友可以關注公眾號,第一時間看到筆者分享的各項知識點,謝謝!