Git生产环境上commit提交多次解决办法

本文介绍了如何在Git中创建并管理Test分支,以及如何解决多次Commit的问题。通过git rebase-i命令合并多条commit,并用git push强制推送更新到远程仓库,确保远程分支历史清晰。
摘要由CSDN通过智能技术生成

1.模拟测试环境:创建Test分支做测试,模拟commit提交多次


(1)现在远程仓库上有两个分支,我们将使用Test

(2)现在需要在本地也创建一个Test分支方便对应上(因为公司项目一般有上十分支,有些只是临时的开发完就删除)

  • checkout不能直接创建(Test是本地分支名,fork_origin/Test是远程仓库别名+远程分支名)

  • 应该直接创建分支:git branch -m Test

(3)现在先push到远程Test分支,可以看到我这里的本地仓库昨天已经被commit一条了

(4)现在对同一个文件修改一点代码

  • git status #可以看到当前在哪个分支,哪些文件被修改,哪些未被跟踪

  • 现在先git add提交文件到本地暂存区,然后在commit 随便注释信息到本地仓库。

  • 现在本地仓库已经有两条了,但是我们只希望远程提交记录只有一条commit(因为我们修改了同一个源码两次,有时候push远程仓库的源码没有注意规范或者注释写错了。但公司一般有规定解决同一个问题/bug只能有一次commit,否则不方便管理)。

 

2.解决多次Commit问题


(1)合并多条commit

  • git rebase -i HEAD~2 #从当前分支合并两条commit记录。head就像链表中的头指针,它指向哪,我们的项目分支/版本就是谁

  • rebase时会弹出一个界面,将第二行的pick 改成 s

  • 可以看到除了第一次commit, 还有第二次的commit。这里需要注释掉第二次commit信息,然后编辑完成!

  • 现在commit信息合并成功。接下来我们再验证本地和远程是否成功

(2)查看合并情况

  • git log    #可以看到  本地  现在只有第一次commi 

  • git show #可以看的第二次commit修改的代码和第一次兼容了

(3)push远程仓库

  • git push fork_origin Test -f  # -f 一定要加,否则会被拒绝

(4)查看远程仓库

  • 现在可以看到第一次和第二次commit都添加到了同一个代码中。并且远程分支只有一个commit记录

要将多次 commit 合并成一次,你可以使用 Git 的 `rebase` 命令或者 `squash` 操作。下面是两种方法的介绍: 1. 使用 `rebase` 命令: - 首先,使用 `git log` 命令查看你需要合并的 commit 的哈希值,并确定你要合并的最早的 commit 和最晚的 commit。 - 运行 `git rebase -i <commit>`,将 `<commit>` 替换为最早的 commit 的哈希值。 - 在弹出的交互式界面中,将需要合并的 commit 前面的 `pick` 改为 `squash` 或者 `s`。 - 保存并关闭编辑器,Git 会自动打开另一个编辑器供你编辑 commit 的信息。 - 修改合并后 commit 的信息,保存并关闭编辑器。 - Git 会将这些 commit 合并成一个新的 commit。 2. 使用 `squash` 操作: - 运行 `git log` 命令查看你需要合并的 commit 的哈希值,并确定你要合并的最早的 commit 和最晚的 commit。 - 运行 `git rebase -i <commit>`,将 `<commit>` 替换为最早的 commit 的哈希值。 - 在弹出的交互式界面中,将需要合并的 commit 前面的 `pick` 改为 `squash` 或者 `s`。 - 保存并关闭编辑器,Git 会自动打开另一个编辑器供你编辑 commit 的信息。 - 修改合并后 commit 的信息,保存并关闭编辑器。 - Git 会将这些 commit 合并成一个新的 commit。 请注意,在使用 `rebase` 或 `squash` 操作之前,确保你在一个新的分支上工作,以防止修改历史提交。此外,注意备份你的代码,以防万一。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值