由于最近尝试给远端仓库提交代码,然而由于多次修改导致多个commit,显然不是很整洁,因此在此学习一下如何通过命令行合并远端仓库的commit。
流程
- 首先需要查看远端有哪些
commit,具体命令为git log --oneline,这样能看到形如以下的远端commit记录
ca707db (HEAD -> add-binary-search-to-next, origin/add-binary-search-to-next) fix lint
0d23379 [sst iterator optimize] change sstIterator::seek to binary search
5f9c3c0 [sst iterator optimize] change sstIterator::seet to binary search and fix lint
c6ebb06 [sst iterator optimize] change sstIterator::seet to binary search
33faf60 [sst iterator optimize] change sstIterator::seet to binary search
4be314e [sst iterator optimize] change sstIterator::seet to binary search这样可以发现当前已经提交的commit记录,考虑如何合并。
- 使用
git rebase -i 4be314e,意思是对于某一个commit(4be314e)及之后的commit,开始进行交互式rebase,大概会出现形如以下的记录,假设提交记录如下所示
A - B - C - D (HEAD)那么执行完命令会出现如下
pick abc1234 Commit B
pick def5678 Commit C
pick ghi9012 Commit D如果想要将BCD都合并,那么改成如下
pick abc1234 Commit B
squash def5678 Commit C
squash ghi9012 Commit D其中pick代表了保留,squash代表了和上一个commit合并。
- 合并完之后,考虑提交到远端,这里用一个比较暴力的方式
git push -f origin remote-branch,直接强制推送到远端,可以发现远端的提交被压缩了。