alwaystest / Blog

24 stars 2 forks source link

Git 相关 #9

Open alwaystest opened 8 years ago

alwaystest commented 8 years ago

Git 相关

标签(空格分隔): Git


ssh -T git@github.com

测试Git的ssh

Git rebase -i head~x

把在一个分支里提交的改变移到另一个分支里重放一遍。 此时,如果commit里面存在两个parent,即这个commit是从两个分支合并过来的,这个commit 不会被选到。但是在我们开发的混乱的代码分支上,如果不pick这个commit,就会导致代码丢失。

我的解决方法是手动添加这次commit,执行到这次commit的时候会报错。 通过报错可以发现,rebase的时候使用了cherry-pick这个命令,这条命令需要一个-m [1|2]选项,指定此次的patch是针对于哪个父commit的。可以通过git log --parents 看到commit的parents,-m的1代表第一个parent,2代表第二个。 手动进行cherry-pick之后再git rebase --continue

写Blog的时候才想到搜索的关键词是 rebase merge commit。 现在我们有了: 解决办法 另一种办法

当然,如果测试的过程当中出了问题,请使用git refloggit reset --hard来反悔

参考:

Git rebase正确流程 Git 常用命令解释