git的 commit 后悔药的操作


1. 修改提交信息

1.1 git rebase -i 修改某次提交信息

命令语法:

git rebase -i 某次提交前一次commitId
复制代码

修改倒数第二次提交 feature/b 倒数第三次提交 变为 feature/b 倒数第二次提交


1.2 修改最后一次提交

最后一次提交信息,可以使用比较简单操作

1.2.1 提交 commit 信息的有错别字,?

git commit --amend
复制代码


1.2.2 提交时,发现代码少写或多写了。想修改提交,保持上次提交信息

git add .
git commit --amend # 进入 commit 编辑,但只需:wq
复制代码


这一步骤,也可利用 git reset 回滚代码来操作,不过那样子太复杂了。

2. git reset 代码回滚

这两个只是代码回滚,但是可变相理解,撤回最后一次提及,后的 commit 信息修改。

说到git reset 就不得说一下revert,这两种命令区别如下:

  • git revert 原有的 commit 保留,并会多一条 Revert 的commit

  • git reset 撤销原有的 commit,修改代码并提交后,就得 git push -f 进行强推远程

常用命令语法:

# revert
git revert head~count # 回滚最后 count 次提交
git revert commitId # 回滚到某次的 commit 提交
# reset 
git revert head~count # 回滚最后 count 次提交
git revert commitId # 回滚到某次的 commit 提交
复制代码

这两种命令的操作,不是讨论的重点,重点是什么情况下使用。

2.1 多个人在同一个分支开发(先说明这点做法是不合理,但总会有历史原因?,出现这种情况),让别人知道你的代码回滚,使用 git revert ,好处在于可不强推。


2.2 代码回滚,不会影响到其他人,是用git reset,这就为什么可以强推。

如果 git reset 后的代码可以保留在工作区,可以修改在重新commit;如果想删掉,直接 git checkout head .(不过这可以简化,git reset --hand,回滚后代码不会保留);


git reset 操作细分有很多情况,具体查文档。

3. 当前分支合并其他分支某次提交

遇到这种情况,使用 git cherry-pick。如下图,feature/a 合并 feature/b 倒数第二次提交
命令语法:

git cherry-pick commitId
复制代码


4. 合并多个提交

4.1 git rebase -i

这个命令很强大,不仅仅只是合并多个提交,还能修改提交记录。但最主要用它合并记录。

命令语法:

git rebase -i 某次提交前一次commitId
复制代码

如下图,把 feature/b 分支倒数第一和第二合在一起,变成倒数第一


4.2 使用 git reset 合并最后几次提交

可以使用git reset,如下图,把 feature/b 分支最后两次commit 合在一起


使用这个原因是比 git rebase 操作简单





转载于:https://juejin.im/post/5d5ac64551882537610692bc

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值