当前位置:   article > 正文

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

hicoud如何实现两个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。完工。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/399543
推荐阅读
相关标签
  

闽ICP备14008679号