gitpro之三修改历史
git commit --amend
amending中文为纠正。该命令的作用是修改上一个提交。把stage区的东西并入到上一个提交之中,从而不必搞一个新的提交。
【gitpro之三修改历史】git commit --amend -m "an updated commit message"
更改上一条的log信息。不加-m来改log也可以,只不过要通过vim操作一下。结论是无论stage区有没有东西,你都可以commit一次,有则会把stage的东西提交到head,无则只是更改log。
git commit --amend --no-edit
--no-edit这个flag代表着不改变log。所以你可以用这条东西更新stage区的文件到最新的一个commit。
WARNING 最好只更改本地的commit,commit一旦提交到了远端,就别再用这种方式改了,可能会导致冲突(私以为改个log还是没问题的...)
git rebase
# 涉及到branch,暂时先不理
git reflog
等同于git reflog show HEAD
。
和log有啥不同?这个显示的是操作,不只是commit,比如:
ecac366 HEAD@{1}: reset: moving to HEAD
ecac366 HEAD@{2}: revert: Revert "second add 1"
52ea7db HEAD@{3}: reset: moving to HEAD
52ea7db HEAD@{4}: checkout: moving from 5d3587cea87e9afee747b015c8cc190caae6362f to master
5d3587c HEAD@{5}: checkout: moving from master to 5d3587cea87e9afee747b015c8cc190caae6362f
52ea7db HEAD@{6}: checkout: moving from 3f0b9788c4d959c705fa416f29ff68dfc183cb70 to master
**在此说明: **HEAD代表着当前的分支。
git reflog show --all
可以展示所有分支的reflog。时间标志
1.minute.ago
1.hour.ago
1.day.ago
yesterday
1.week.ago
1.month.ago
1.year.ago
2011-05-17.09:00:00
git reflog HEAD@{1.hour.ago}
百分号和大括号是必须的。用在diff时可以这么用,以区分两个版本:
git diff master@{0} master@{1.day.ago}
show其实是个隐藏命令
git reflog
== git reflog show
恢复历史(超越rebase的牛逼操作,永不再丢失代码)
先用
git reflog
看一下你要去的目标版本,然后用git reset --hard HEAD@{8}
之类的代码把版本恢复过去即可~推荐阅读
- Rust编程小知识|Rust如何修改字符串String中的字符
- Mysql8.0修改lower_case_table_names参数导致重启失败
- 工具使用|如何修改Jupyter Notebook工具的初始工作目录
- 心灵物语之三
- 《欢乐猜字谜》(修改稿)
- 〖读武侠,谈教育系列之三〗刻意练习,看郭靖怎样从笨伯到大侠
- 销售实战八大案例之三
- python 修改python插件包的默认安装路径
- linux|wsl如何修改默认分配内存()
- 如何修改|如何修改 SAP ABAP OData 模型,使其支持 $expand 操作试读版