Oh Shit, Git!?!

快速帮你解决git提交犯下的错误

标签: Github
如果您发现本站资源已经失效不能下载,请 点击这里 联系我们修正!

用好 Git 很难: 很容易就犯错了,然后想自己弥补犯下的错,简直太难了。查阅 Git 文档简直就像是个 “鸡生蛋 蛋生鸡” 的问题,你得知道你要的是啥 ,但如果我知道的话,我还他妈查个毛文档啊!

所以接下来我会分享一些我遇到过的抓狂的经历,然后用 白话 来说说我是如何解决的。

哎呦我去,我刚才好像犯了个大错,能不能给我台时光机啊!?!

git reflog
# 你将看到你在 git 上提交的所有改动记录被列
# 了出来,而且囊括了所有的分支,和已被删除的
# commit 哦!
# 每一条记录都有一个类似 HEAD@{index} 的索
# 引编号
# 找到在犯错前的那个提交记录的索引号,然后执
# 行:
git reset HEAD@{index}
# 哈哈,这就是你要的时光机!

你可以用这个方法来找回那些你不小心删除的东西、恢复一些你对 repo 改动、恢复一次错误的 merge 操作、或者仅仅想退回到你的项目还能正常工作的那一时刻。我经常使用 reflog,在此我要向那些提案添加这个功能的人们表示感谢,太谢谢他们了!

哎呦我去,我刚提交 commit 就发现还有一个小改动需要添加!

# 继续改动你的文件
git add . 
# 或者你可以添加指定的文件
git commit --amend --no-edit
# 你这次的改动会被添加进最近一次的 commit 中
# 警告: 千万别对公共的 commit 做这种操作

这经常发生在我提交了 commit 以后立马发现,妈蛋,我忘了在某个等号后面加空格了。当然,你也可以提交一个新的 commit 然后利用 rebase -i 命令来合并它们,但我觉得我的这种方式比你快 100 万倍。

警告: 你千万不要在已推送的公共分支上做这个 amend 的操作! 只能在你本地 commit 上做这种修改,否则你会把事情搞砸的!