我建议你与rebase onto
解决方案。假设我们有以下回购:
[email protected] c:/_TEMP/FOO (AIOEC-393) $ git lga
* 8c2d5c5 - (HEAD, AIOEC-393) commit5 (Yanflea 2 minutes ago)
* 3c20e52 - commit4 (Yanflea 2 minutes ago)
* c5383af - commit3 (Yanflea 2 minutes ago)
* fb11e98 - commit2 (Yanflea 2 minutes ago)
* e019261 - (develop) commit1 (Yanflea 2 minutes ago)
* 0cfe064 - (master) Initial commit (Yanflea 2 minutes ago)
而且你想拥有从AIOEC-393
分公司所有提交除commit2。
让我们进入到一个 '临时' 分支(因此AIOEC-393
没有被修改):
$ git checkout -b develop-target
,然后使用commit2为支点使用rebase onto
命令:
$ git rebase --onto develop fb11e98 develop-target
让我们来看看日志:
[email protected] c:/_TEMP/FOO (develop-target) $ git lga
* 7bcb162 - (HEAD, develop-target) commit5 (Yanflea 2 minutes ago)
* 3c89459 - commit4 (Yanflea 2 minutes ago)
* e6ed5f7 - commit3 (Yanflea 2 minutes ago)
* e019261 - (develop) commit1 (Yanflea 2 minutes ago)
* 0cfe064 - (master) Initial commit (Yanflea 2 minutes ago)
现在我们只需要快进从develop
到develop-target
(然后删除develop-target
):
$ git checkout develop
$ git rebase develop-target
$ git branch -d develop-target
日志:
[email protected] c:/_TEMP/FOO (develop) $ git lga
* 7bcb162 - (HEAD, develop) commit5 (Yanflea 2 minutes ago)
* 3c89459 - commit4 (Yanflea 2 minutes ago)
* e6ed5f7 - commit3 (Yanflea 2 minutes ago)
* e019261 - commit1 (Yanflea 2 minutes ago)
* 0cfe064 - (master) Initial commit (Yanflea 2 minutes ago)
不,我只想做一个新的分支,它是“发展” +最新的四次提交 –
是的,看看更新后的答案。应该工作 – ritter
'reset --hard'是危险的建议... – knittl