git 进阶

Posted magma

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了git 进阶相关的知识,希望对你有一定的参考价值。

由一个个case组成:

case 1

场景

在前一家公司的时候遇到过一次,没有完美解决,今天又重现了:我将部分代码从仓库A拆出来,放到新仓库B中,因为图方便,我直接使用了copy命令,但是!!!没有想起来隐藏的.git目录,于是新仓库B的初次提交直接更新到了A上。

解决办法

上一次遇到类似的问题,我是直接一个reset --hard 到错误 commit 的前一个 commit,但是自此之后,恶梦开始:因为我们组同学较多,多数从主分支切的代码已经是被污染过的,于是经常带着错误的commit回归!!!
我左思右想,无法找到合适的办法,好在此次开发的同学不多——并且各自切出去的分支都是没有被污染的,我手动reset了所有被污染的分支,再让同学们将已经提交的在污染之后的功能手动合并到主分支上。左右算是解决了。

这种错误的commit没有及时发现,发现时已经在后面提交了许多正常commit的情况应该不算少见,如何在发现之后方便地解决问题?我目前想到的就是使用git rebase的提交规范,保证大家的commit都是连续的,这样在解决此类错误的相对来说还是比较方便的。

case 2

场景

本地 reset 过猛,跑过头了,像以前我可能直接就把本地的仓库直接删了,再下载一个,今天忽然觉得太low了。于是我搜了下,发现一个很好玩的命令,git reflog

git reflog

git reflog 记录了本地git上的所有操作,并且有对应的索引,可以直接使用git reset 索引的方式,回归到对应的操作。

140c8eb [email protected]{0}: reset: moving to 140c8ebcf6d

使用 140c8eb 和 [email protected]{0}都可以回归

以上是关于git 进阶的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段15——git命令操作一个完整流程

VSCode自定义代码片段15——git命令操作一个完整流程

我的Android进阶之旅NDK开发之在C++代码中使用Android Log打印日志,打印出C++的函数耗时以及代码片段耗时详情

如何管理在每个 git 版本中添加私有代码片段?

使用 Git 来管理 Xcode 中的代码片段

markdown Git代码片段