1
jsz 2013 年 3 月 30 日 git reflog
reset 到两个commit都没有的状态,然后再 cherry-pick 回来。 |
2
pythonee OP @jsz 哦? 我还没有用过cherry-pick,不晓得cherry-pick回来之后,所有后续commit是否都还在,还是说仅仅到reset的那个commit
|
3
jsz 2013 年 3 月 30 日 @pythonee cherry-pick 只是拿指定的那些commit.
假设你是把 A B 两个 commit rebase 成了一个 C。那么, git reset --hard HEAD^ 把 C 删除 git cherry-pick A B 把 A B 拿回来 |
4
pythonee OP @jsz 嗯,实际操作了一把,但是这样离我想达到的效果还是有差距的,我还想保留commit的时间顺序
举个例子,现在我的commit是这样 A --> B --> C --> D rebase后,我把B删掉了,现在是 A --> C --> D 而我想恢复B commit,还想把B放到A之前,C之后,也就是像原来一样 如果用cherry-pick,我觉得如果没有冲突的话,我可以直接cherry-pick回来,也就是 A --> C -->D 如果有冲突,大不了reset到A,然后一步一步cherry-pick回来,但是这样比较没有效率就是 |
5
pythonee OP 更正:
如果用cherry-pick,我觉得如果没有冲突的话,我可以直接cherry-pick回来,也就是 A --> C -->D --> B |
8
imcotton 2013 年 3 月 30 日
|
9
imcotton 2013 年 3 月 30 日
|
10
G_virus 2013 年 3 月 31 日 via iPhone
用reflog找到最初的D,reset回到D就可以了。git的commit包含了整个历史,只要HEAD对就对了。
|
12
jsz 2013 年 3 月 31 日 via Android
@pythonee 咱们说的好像是一个意思?就是reset到A,然后把后边的一次cherrypick回来。cherrypick可以一下指定多个commit,我可能把顺序说反了。
|
13
jsz 2013 年 3 月 31 日 via Android
把后边的”依次”*
|