放弃提交到远程发现最近一个已经提交的内容(commit)

git log

查看提交的历史
相关参数:

参数效果
p按补丁格式显示每个提交引入的差异。
stat显示每次提交的文件修改统计信息。
shortstat只显示 --stat 中最后的行数修改添加移除统计。
name-only仅在提交信息后显示已修改的文件清单。
name-status显示新增、修改、删除的文件清单。
abbrev-commit仅显示 SHA-1 校验和所有 40 个字符中的前几个字符。
relative-date使用较短的相对时间而不是完整格式显示日期(比如“2 weeks ago”)。
graph在日志旁以 ASCII 图形显示分支与合并历史。
pretty使用其他格式显示历史提交信息。可用的选项包括 oneline、short、full、fuller 和 format(用来定义自己的格式)。
onelinepretty=oneline --abbrev-commit 合用的简写。*

注意

如何退出 git log

=>英文状态下按Q
在这里插入图片描述

git revert

弃指定提交的修改,但是会生成一次新的提交,需要填写提交注释,以前的历史记录都在

git reset

git revert命令的效果类似于reset,但其方法不同。 通常,reset的做法是移动分支指针到commit链其他位置,进而实现撤销更改。revert命令会在链的末尾添加新的提交以“取消”更改。历史记录中不会出现放弃的提交记录。

git rebase(变基)

rebase操作可以把本地未push的分叉提交历史整理成直线;
rebase的目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比。

放弃提交到远程发现最近一个已经提交的内容

方法1:git rebase -i 倒数第二个commitid 然后 git push origin 分支名 -f (分支代码落后于远程,需要强制提交)(提交记录,提交内容都被去掉了)

提示:此方法需要vim操作命令窗口(输入i进入编辑模式, 将需要删除版本之前的pick 修改为drop或者d,删除该记录,然后按下ESC,输入:wq保存并退出,此时查看git log 发现最近的commit已经被删除)

方法2 git reset --hard HEAD~ 然后 git push origin 分支名 -f (分支代码落后于远程,需要强制提交)

方法3 git revert 最近的commitid 然后 git push origin 分支名 (提交记录仍然存在,提交内容被去掉了)

现在这里有三个测试提交,现在的需求就是去掉“第三个测试提交”
第一次修改内容

变更了“下载数据明细” => “下载数据明细111”
在这里插入图片描述

第二次修改内容

多复制了两行内容
在这里插入图片描述

第三次修改内容

删除了一行数据
在这里插入图片描述
查看日志
在这里插入图片描述

方法1 git rebase
git rebase -i 9e7f6f52041d989ef44ba12c750ba9185630cc8b

在git rebase中输入VIM时如何开始输入?

参考连接1:在git rebase中输入VIM时如何开始输入?
参考链接:git rebase 的作用
git删除中间某次提交

方法2采用git reset回退到第二次提交的位置
执行代码
git reset --hard 9e7f6f52041d989ef44ba12c750ba9185630cc8b
 git push origin product-zy -f

在这里插入图片描述

得到的代码结果

在这里插入图片描述
这个时候我们已经回退到了“第三个测试提交”之前的内容

查看git log时间线

在这里插入图片描述

方法3 采用git revet

重新提供更改四的commit
在这里插入图片描述
更改的代码区域:
在这里插入图片描述

这个时候会发现代码多了新的更改记录,更改四的代码记录被回退

在这里插入图片描述

在这里插入图片描述
可以看到新增了一条revert的记录并且显示修改4的commit信息还在
在这里插入图片描述

扩展:

如果我们需要回退到一个并不是当前最近的一次更改,与当前的版本之间间隔着几个历史记录,并且之间的这些历史记录需要保存,我们改如何处理。
如图:提交记录为 A-B-C,想要干掉B,还可以用 git rebase --onto A B C
在这里插入图片描述

1.尝试git rebase

新增一个更改5,然后我们的目标是保留除了更改2之外的所有记录
在这里插入图片描述
也就是去掉更改2的代码
在这里插入图片描述

命令行(暂时为解决)
git rebase -i 9d30a942d64140072a888e308f880c25030d5d08

执行产生了冲突这里需要解决
在这里插入图片描述
这一步的操作原理可以参考:
Git 实用操作:撤销 Commit 提交(动图讲解)

总结

rebaserevertreset
提交记录去掉存在且新增一个revert的修改回退commit,默认方式.
提交内容去掉去掉保留源码,默认方式.

以上如有不对欢迎指正

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值