美文网首页
Git时光机

Git时光机

作者: 莫失莫忘X3 | 来源:发表于2023-04-21 16:55 被阅读0次

git如果不熟练,很容易出错。但是好在git自身提供了强大的时光机,可以尽可能的避免误操作引起的损失。这里会列举一些常见的误操作及补救方法。

提交遗漏/提交信息不规范

提交的时候可能会遗漏掉一些修改,或者信息填写不规范。如果再提交一次,会多一些无意义的节点,并且后面如果回滚也会不清晰。可以借助git commit --amend 来修改上次提交。

# 遗漏提交
# 第一次提交A1,但是忘记了a.js文件
git add a.js
git commit --amend #出现提交信息输入框,并且上次提交信息会出现在框中,提交完成后上次提交就会修改。

# 提交信息错误
git commit --amend #暂存区没有任何文件的情况下,直接执行该指令,可以修改提交信息

提交错误

假如某一次提交修改的内容引起了错误,可以使用 git revert来撤销该次提交。revert会产生一个提交节点,便于后期问题排查。

# 找到某次提交的commit id 是 638d180
git revert 638d180

假如连续多次提交都有错误,可以使用 git reset 来批量撤销。

# 假如有 X, a, b, c三次提交,其中a,b,c三次提交都是错误的,X的commit id为638d180
# 同时本地还有2个未提交的修改文件e.txt(工作区), f.txt(暂存区)
# reset有3种方式,soft, mixed, hard

# 回滚至X提交,并且a,b,c的修改都会恢复至暂存区,e,f文件状态不变
git reset --soft 638d180

# 回滚至X提交,并且a,b,c的修改都会恢复至工作区,e文件状态不变,f会恢复至工作区
git reset --mixed 638d180

# 回滚至X提交,并且a,b,c的修改都会丢失,e,f文件的修改也会丢失。
git reset --hard 638d180

git reset --hard 之前,如果工作区或暂存区有别的修改,务必使用git stash 封存修改,不然回滚后就会消失,git reflog也无法找回

撤销某次提交时的某个文件

## 假如需要将 detail.txt 文件回滚到 37b69551
git checkout 37b69551 -- detail.txt

操作完成后,撤销会以commit的形式,将修改添加到暂存区。可以通过对比来查看撤销是否需要调整(例如 37b69551 之后的某个提交 123456 也修改了这个文件,而你想撤销的只是 37b69551 提交中的修改,可以通过手动将123456的修改加回上去的方式来弥补,仅限于修改不是很多的情况)

假如是非连续多次提交都有错误,例如错误的rebase,可以采用 git reflog

git 会自动记录本地的每次操作,例如checkout,rebase,commit,reset等,利用reflog可以查看所有操作记录,然后结合 git reset 回到某个操作前的状态。

git reflog

62c8492 HEAD@{38}: rebase: checkout master
b24e36e HEAD@{39}: checkout: moving from b to a
956dc71 HEAD@{40}: commit: mod a on b

# 确认要回到 956dc71 的状态
git reset --hard 956dc71

更多场景及补救措施,可以查看 Oh shit, git!

相关文章

  • Git时光机

    时光机 先序 git status 查看当前仓库状态git diff xxxxx 查看修改 版本回退 ** HE...

  • GIT_时光机

    参考文档:https://www.liaoxuefeng.com/wiki/0013739516305929606...

  • Git命令总结

    根据廖雪峰老师Git教程的总结 Git教程 三棵树Git三棵树.png 配置与提交 时光机穿梭 远程仓库 注意:第...

  • git-时光机1

    git status 查看工作区状态git diff 工作区与版本库的区别git add file1 file2...

  • git-时光机2

    git checkout -- file 在工作区的修改全部撤销git reset HEAD 可以把...

  • 01、如何使用GIT_01

    [toc] git git是一个用于帮助用户实现版本控制的软件。 时光机穿梭 命令: 总结: 版本回退 HEAD指...

  • git时光穿梭机reset

    在开发过程中,git的版本管理越来越普及。在版本管理中,最常用和最重要的是重置提交的版本,恢复后悔做了的事。大家都...

  • git教程之时光机穿梭

    本系列教程来自廖雪峰的官方网站,现在搬运过来,目的帮助自己和小白学习收藏!附赠:常用git命令清单 目录 前言 版...

  • 03 git 时光机穿梭-查看状态

    git status 查看git状态 现在把工作区中的的readme.txt修改成 Git is a distri...

  • 07 git 时光机穿梭-撤销修改

    git checkout -- file 可以丢弃工作区的修改 今天你的老板突然说要使用svn来代替git,你的心...

网友评论

      本文标题:Git时光机

      本文链接:https://www.haomeiwen.com/subject/mprjjdtx.html