about blog github

24 May 2019
git将多次提交合并

执行git log查看提交记录:

$ git log
commit 9238096b62d5d2f8f02d88b3c019756aa3087cf9 (HEAD -> master, origin/master, origin/HEAD)
Author: xxx
Date:   Tue Apr 2 08:06:35 2019 +0800

    auto commit

commit 0865d59799337716d3cc6f74efae0a1c3cb101db
Author: xxx
Date:   Wed Mar 20 15:51:54 2019 +0800

    auto commit

commit 72dae88a2dcc059ba64b1978822f03adeee586ad
Author: xxx
Date:   Wed Mar 13 10:30:42 2019 +0800

    auto commit

commit eb5eca3677c77d9cfdc49cffd083107d3ba905f2
Author: xxx
Date:   Wed Mar 13 10:23:00 2019 +0800

    auto commit

commit 42325d7ddb78fcc94e2a84e5fb4db1d057707123
Author: xxx
Date:   Tue Mar 5 16:41:01 2019 +0800

    auto commit

选择要合并的提交,比如这里合并前4个提交,即:

  • 9238096b62d5d2f8f02d88b3c019756aa3087cf9
  • 0865d59799337716d3cc6f74efae0a1c3cb101db
  • 72dae88a2dcc059ba64b1978822f03adeee586ad
  • eb5eca3677c77d9cfdc49cffd083107d3ba905f2

那么使用第5个提交的id,执行以下命令:

git rebase -i 42325d7ddb78fcc94e2a84e5fb4db1d057707123

按照要求,将除第一个以外的pick修改成s,保存退出:

pick eb5eca3 auto commit
s 72dae88 auto commit
s 0865d59 auto commit
s 9238096 auto commit

然后修改本次提交的信息,这里将4次的提交信息都合并,使用了第一句作为本次提交信息,保存退出:

This is a combination of 4 commits.
# This is the 1st commit message:

# auto commit

# This is the commit message #2:

# auto commit

# This is the commit message #3:

# auto commit

# This is the commit message #4:

# auto commit

执行git log查看前4次提交已经合并成一个:

$ git log
commit 1e645af54bcb4fd1e8dc7ec4e40e6474cc95fcbd (HEAD -> master)
Author: xxx
Date:   Wed Mar 13 10:23:00 2019 +0800

    This is a combination of 4 commits.

commit 42325d7ddb78fcc94e2a84e5fb4db1d057707123
Author: xxx
Date:   Tue Mar 5 16:41:01 2019 +0800

    auto commit

最后执行git push -f强制推送到远程仓库,这里记住不能再pull远程仓库,否则就会被远端的提交信息合并。

放弃本次合并执行以下命令:

git rebase --abort

再次编辑输入以下命令:

git rebase --edit-todo

参考:

https://segmentfault.com/a/1190000007748862



LEo at 00:12

about blog github