哦豁完蛋,Git!
2019年6月22日
翻译自Oh shit, Git! 原文作者:Katie Sylor-Miller
Git很难,搞砸却很容易.特别是想要搞清楚你该怎么补救你犯得错误简直是不可能的.
Git文档也有着一个“先有鸡还是先有蛋的问题”:你几乎不知道该怎么去查找解决你遇到的问题的方法,除非你已经知道了能够解决你遇到的问题的方法的名字.
以下我将通过平直的语言列举一些我遇到过并陷入其中的糟糕问题,并最终我是怎么摆脱它们的.
哦豁完蛋,我刚刚做了一些非常糟糕的操作,谁能帮我找哆啦A梦借台时光机!
1 | git reflog |
你可以用它来找回你不小心删除并提交了的内容,或者删除一些你把Git仓库搞炸的操作,或者从一次糟糕的merge中恢复到原来的状态,亦或是你只是想回到过去某一个一切都能正常工作的节点.我 经常 使用reflog,有许多许多许多许多的人建议我把它加在这里.
哦豁完蛋,我刚刚提交完,发现还有一些东西需要改!
1 | git add . # 或者 add 你需要提交的文件 |
我常常在写完代码,跑完测试然后提交准备上传发布的时候突然发现忘记做代码格式化而产生这样的问题.虽然你也可以直接提交一个新的提交记录然后通过 rebase -i 来合并这次提交和上次提交,但是相信我,前者的速度比后者快一百万倍!
哦豁完蛋,我刚刚提交的时候写错了提交信息!
1 | git commit --amend |
有时候一份没有错别字的提交记录更能够帮助你的同事理解你的工作成果
哦豁完蛋,我刚刚不小心提交到了master,但是这应该是在一条新分支上面提交的!
1 | # 在你错误提交之后在现有的状态下创建一条新分支 |
注意:如果你已经上传到了远程仓库,那么这条方法将就帮不了你了
哦豁完蛋,我不小心提交到了错误的分支上!
1 | # 撤销上次提交,并保留修改的文件 |
有许多人建议在这种情况下使用cherry-pick,所以以下是cherry-pick的写法,你可以挑你喜欢的来用
1 | git checkout 正确的分支名 |
我受够这一团乱麻了,我放弃了!
1 | cd .. |