idea取消comiit_IDEA 合并多次commit为一个?

答完以后我只想吐槽下,这种操作还是命令行里来的方便。答案里提供了3种操作流程,个人习惯第2种方式,但这个只适合压缩最后n个commit的情况。第一种方式最佳,建议熟练掌握。第三种方式纯粹蛋疼,可以不看,但对理解git会有所帮助。用命令行的话,其实还有很多方法,但都不是常规手段了,对理解和学习运用git底层原理有帮助。

---------------------------------------------------------------------------------------------------------------

IDEA里的操作方式:(这种方式对应git rebase -i,是功能最强,适用最广泛的,掌握以后可以处理很多需求)

1.点击菜单VCS->Git->ShowHistory

2.在History页上点击Log

3.例子中有4个commit(将init commit看成第1个),假如要将上面最后2个commit(第4和第3个)压缩成1个,那么选中第2个commit(第3个的parent),右键菜单Copy Revision Number,把复制的commit sha1粘贴在一边,防止粘贴板内容被后续的操作覆盖掉

4.菜单VCS->Git->Rebase,勾上Interactive,Onto粘贴第3步中复制的commit sha1

5.在交互式rebase菜单中,将第一个选为pick,后面的都选为squash,点Start Rebasing

6.在Additional Rebase Input中编辑下压缩以后的commit message

7.完工

另外,可以用以下命令实现:git reset --soft;

git commit

IDEA里的操作方式:

1.同上

2.同上

3.选中第2个commit,右键菜单Reset Current Branch to Here

4.选择Soft,点Reset。这里选Mixed似乎也可以,IDEA中接下来的那个Commit Changes好像包含了git add的操作。

5.菜单VCS->Commit Changes,完成。

还有一种方式,利用以下命令实现:git checkout ;

git merge --squash;

git commit;

#记录下当前的commit sha1;

git checkout ;

git reset --hard;

IDEA的操作方式:

1.同上

2.同上

3.目标同上,假设要压缩的commit在master分支上,选中第2个commit,右键菜单Checkout Revision

4.菜单VCS->Git->Merge Changes,Branches to merge选择master,勾上Squash commit,点击Merge

5.菜单VCS->Commit Changes,选择要commit的文件,编辑下Commit Message,点Commit。如果警告说当前在detached HEAD状态,忽略,点Commit。

6.这时History的Log页面上可以看到以下状态,detached HEAD状态可以看成是一个无名分支

7.选中detached HEAD,右键菜单Copy Revision Number,最好粘贴在一边以防粘贴板被其它操作覆盖

8.选中master所在的commit,右键菜单Branch 'master'->Checkout

9.菜单VCS->Git->Reset HEAD,Reset Type选择Hard,To Commit填入第7步中复制的commit sha1,点Reset。完工。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部