我能像今天这般秀,不是我有多努力,实在是碰到的问题太棘手了。
队伍里一个岁数不大的老年人,我们叫ta小A,每隔一段时间就要把代码结构大调整。包括:
- 文件所在的文件夹变更
- 定义和声明所在的文件
- 文件夹所在的文件夹变更
比如团队还在v1.6上开发v1.7功能呢,ta从v1.4切出去分支直接进行上述大调整操作。结果就是,我们在原来分支上的v1.5 v1.6乃至v1.7功能,全都消失不见。
以下为操作记录。
第一步,定位同事A从哪个提交切的分支
一个图片丢失了,在它所在的资源文件夹,进行git log,看到最根源有一个提交C1,切换到C1,
git co C1
查看C1的parents们,目的是为了确认小A到底是从何提交切出去的分支(ta自己也不记得了)
git log
在打印的结果中看到同事B的名字,同事B的提交是C2,以及C2的child C3
git branch -r --contains C2
git branch -r --contains C3
发现C2果然就是小A切出去的提交。因为C3就已经在新分支上,而C2还有原分支。
第二步,找出我的没有合并进去的提交
找到我在旧分支上,没有包括在新分支里的提交。首先,看看我在原分支C2之后进行了哪些提交。
C2提交的时间是12月2日。所以打印我、和同事B提交的所以记录:
git log --committer="myname" --committer="Bname" --after="2021-12-1" --pretty=format:"%h %an %ad : %s" --date=short --no-merges --reverse
h,表示提交的has