Git程序员

git rebase 操作总结(合并git commit的mes

2019-03-15  本文已影响0人  梦想成真213

第一步:新建一个干净的仓库,做五次修改提交,不要建分支,只做修改提交推送到远程

第二步:想要修改某一次的commitmessage,比如把hello git改成1

$ git log
commit 6eb562ed87eb5f763bba96eb0eef5e795d8acbaa
Author: chenjuanhe <chenjuanhe@pptv.com>
Date:   Fri Mar 15 15:33:27 2019 +0800

    5

commit 76ea4563339fda46a895c8ccf5fdf8be9de98210
Author: chenjuanhe <chenjuanhe@pptv.com>
Date:   Fri Mar 15 15:32:59 2019 +0800

    4

commit 073583226ceb34ea4f3a144d23e2cc0c4186269a
Author: chenjuanhe <chenjuanhe@pptv.com>
Date:   Fri Mar 15 15:32:38 2019 +0800

    3

commit 99d522288e7e28694b477021ca6556b2ca7ce61f
Author: chenjuanhe <chenjuanhe@pptv.com>
Date:   Fri Mar 15 15:31:44 2019 +0800

    2

commit 43ca7897fa5a1bb56b95729338db6fced7be69c0
Author: chenjuanhe <chenjuanhe@pptv.com>
Date:   Fri Mar 15 15:31:09 2019 +0800

    hello git

commit 8e455b2861b5b28c907f76b080bb0394e461495b
Author: mxcz213 <496182124@qq.com>
Date:   Fri Mar 15 15:29:15 2019 +0800

    Initial commit

复制这条meaasgehello git,复制commitId8e455b2861b5b28c907f76b080bb0394e461495b
使用git rebase -i 8e455b2861b5b28c907f76b080bb0394e461495b命令

$ git rebase -i 8e455b2861b5b28c907f76b080bb0394e461495b

出现这个画面:


ivim切到插入状态,修改pickedit,最后按Esc退出键,再按:wq保存修改,按回车键Enter结束

$ git rebase -i 8e455b2861b5b28c907f76b080bb0394e461495b
Stopped at 30432ba... hello git
You can amend the commit now, with

        git commit --amend

Once you are satisfied with your changes, run

        git rebase --continue

现在是修改状态就可以修改提交的message了,使用命令git commit --amend

mxcz@ITA-1401-0047 /E/workCode/git-exercise-2 (master|REBASE-i)
$ git commit --amend
[detached HEAD ea2c59f] 1
 1 file changed, 1 insertion(+)
 create mode 100644 operate_git.txt

然后按照提示的使用命令git rebase --continue

mxcz@ITA-1401-0047 /E/workCode/git-exercise-2 (master|REBASE-i)
$ git rebase --continue
Successfully rebased and updated refs/heads/master.

最后使用git push -f提交到远程

mxcz@ITA-1401-0047 /E/workCode/git-exercise-2 (master)
$ git push -f
Counting objects: 16, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (10/10), done.
Writing objects: 100% (15/15), 1.33 KiB, done.
Total 15 (delta 0), reused 10 (delta 0)
To git@github.com:mxcz213/git-exercise-2.git
 + 6eb562e...c210399 master -> master (forced update)

在查看git log,文件提交的message已经被修改了。


期间如果出现任何错误都使用git rebase --abort重来

合并message


同样是上面的操作,将2、3的提交合并到一起,使用2commit id
$ git rebase -i ea2c59fb124d821586e9ec55231e746dd781d488
[detached HEAD e015cb4] 23
 1 file changed, 3 insertions(+), 1 deletion(-)
Successfully rebased and updated refs/heads/master.

只把3对应的pick改成s,然后保存新开了一个vim,删除2/、3注释,改成23

最后强制push到服务端:
$ git push -f
Counting objects: 11, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (6/6), done.
Writing objects: 100% (9/9), 844 bytes, done.
Total 9 (delta 0), reused 6 (delta 0)
To git@github.com:mxcz213/git-exercise-2.git
 + 8116add...ddb9a50 master -> master (forced update)

再查看git log,2、3的提交合并到2里面了,commit id变成2的了,注意:4和5的commit id也被改变了

注意:

这里使用git push是不行的,
必须加强制push标志位-f

总结命令

git rebase -i [commit id]
git commit --amend
git rebase --continue
git push -f

参考:https://www.jianshu.com/p/54cd784fc9aa

上一篇 下一篇

猜你喜欢

热点阅读