squash commit合并多个commit

在使用 Git 作为版本控制的时候,在我们开发完分支后,一般分支上会有很多 commit,我们可能会由于各种各样的原因提交了许多临时的 commit,而这些 commit 拼接起来才是完整的任务。在合并到主干的时候,往往这类 commit 显得臃肿多余。为了方便别人做 code review,我们希望合并一些不必要的 commit 使我们的分支显得干净一目了然,也方便管理。
使用pycharm
应用squash commit时有两种情形,情形一:
当我们在本地分支Branch1进行了多次commit并push到自己的远程git库并提交pull request后此时checkout到本地master分支,并从upstream/master中创建新的分支Branch2并fetch最新的项目代码,然后在pycharm中选中VCS-->Git-->Merge Change选中合并分支Branch1并勾选Squash commit,保存,再一次提交commit并push到自己远程git库的分支Branch2,最后我们对Origin/Branch2进行pull request,此时我们发现在中只剩下了一个commit!然后把在PR状态的远程分支Branch1关闭,PR状态的Branch2下的Discussion中添加Branch1的地址可以让他人访问看到之前做的所有commit
情形二:
我们在本地分支Branch1中只提交了一次commit1并push到了自己的远程库分支Origin/Branch1,同时提交了pull request,然而第二天我们发现本地分支Branch1上的代码有问题,进行修改后提交了commit2并同样push到Origin/Branch1,此时gitlab中Branch1分之下有了commit1和commit2,之后若要合并commit,和情形一操作相同,此时checkout到本地master分支,并从upstream/master中创建新的分支Branch2并fetch最新的项目代码,然后在pycharm中选中VCS-->Git-->Merge Change选中合并分支Branch1并勾选Squash commit,保存,再一次提交commit并push到自己远程git库的分支Branch2,最后我们对Origin/Branch2进行pull request,此时我们发现在中只剩下了一个commit!然后把在PR状态的远程分支Branch1关闭。

 

使用git.bash

和使用pycharm类似,们在本地分支Branch1进行了多次commit并push到自己的远程git库Origin/Branch1,并提交pull request后,如果想合并commit,

1.git checkout  master     checkout到本地master

2.git fetch  upstream/master       从原始远程库upstream/master上fetch最新的项目代码

3.git branch -b Branch2  在分支master上新建本地分支Branch2

4.git merge --squash Branch1  和本地分支Branch1合并

5.git commit -m  "squash commit"   提交commit信息

之后再gitlab或github中对Branch2提交PR同时关闭Branch1的PR状态

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Squash commit是将多个连续的commit合并成一个单独的commit的操作。通过使用Squash commit,可以将多个相关或者类似的commit合并到一起,从而保持git项目的历史记录的整洁性和简洁性。这个操作通常在提交pull request后,进行代码审查和合并之前使用。 Squash commit操作可以通过使用Git命令行或者Git客户端工具来完成。一个常见的方法是使用rebase命令来进行Squash commit操作。具体步骤如下: 1. 使用git fetch命令从远程仓库获取最新的代码。 2. 使用git rebase -i命令来进入交互式rebase模式。 3. 在交互式rebase模式中,将需要合并commit前面的pick命令改为squash或者s。 4. 保存并退出交互式rebase模式。 5. 在弹出的编辑器中,编辑合并后的commit的标题和描述。 6. 保存并退出编辑器。 7. 完成Squash commit操作后,可以使用git push命令将合并后的commit推送到远程仓库。 需要注意的是,在进行Squash commit操作之前,请确保已经备份了重要的代码,并且在操作前仔细检查每个commit的内容,以确保不会丢失任何重要的更改。此外,合并commit可能会导致项目历史记录的改变,因此在团队合作中,需要与团队成员讨论和确认Squash commit操作的可行性和影响。 总结起来,Squash commit是将多个连续的commit合并成一个单独的commit的操作,可以通过使用rebase命令来实现。这个操作可以使代码库的历史记录保持整洁和简洁,通常在提交pull request后进行代码审查和合并之前使用。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [gitCommit.mode:SubEthaEdit 模式,为 git commit 消息添加一些语法着色](https://download.csdn.net/download/weixin_42169971/19936448)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [squash commit合并多个commit](https://blog.csdn.net/mge789/article/details/78273592)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值