Slide 1

Slide 1 text

Git 远程恢复被force-push的队友的commit 2019.07.29 @mark

Slide 2

Slide 2 text

情景⼀一

Slide 3

Slide 3 text

情景⼀一:彼此没有沟通,A、B各⾃自依次force push的了了代码。 远程仓库显示了了最后的B的提交。 请问如何,恢复A的部分commit? 开发A 开发B 远程仓库 19:00 pm force push 19:50 pm force push

Slide 4

Slide 4 text

⽅方法⼀一 ⽤用户A解决

Slide 5

Slide 5 text

经过沟通,开发者A可以cherry-pick或者rebase,把⾃自⼰己的本地 提交,和远程分⽀支,进⾏行行处理理,再进⾏行行后续的追加提交。

Slide 6

Slide 6 text

⽅方法⼆二 中央仓库解决

Slide 7

Slide 7 text

远程机器器,git reflog ,使⽤用cherry-pick恢复。 实际上这个不不合理理。中⼼心节点,不不应该操作。 其实我不不太清楚,中央节点,有没有reflog,应该是有的 中央仓库解决

Slide 8

Slide 8 text

⽅方法三 ⽤用户B解决

Slide 9

Slide 9 text

1.本地reflog仅仅是⾃自⼰己的——⽆无法下载到远程的reflog。这条 路路不不通。 2.⽆无法QQ远程共享屏幕帮A操作,假设A还离职了了,还删除了了 远程仓库(Hard模式) B在本地⽆无记录的情况下如何恢复A的部分节点? B的Hard模式

Slide 10

Slide 10 text

Git-apply Git-am

Slide 11

Slide 11 text

1.中央仓库是有记录的。 2.查看想要找回的commit 3.下载patches⽂文件 4.本地使⽤用 git apply 针对单个⽂文件 5.本地使⽤用 git am 针对单⽂文件、⽬目录(批量量⽂文件) 6.区别am会⽣生成commit节点。这个就是我们想要的

Slide 12

Slide 12 text

问题解决 The End