Git checkout <commit>然后提交并保留所有提交</commit>

时间:2015-03-25 15:33:31

标签: git version-control

我在Git上有一个问题要解决,这是我们执行的步骤序列

假设我在主人身上做了3次提交

- commit-1
- commit-2
- commit-3

现在我结帐到commit-2

git checkout commit-2

然后我做了commit-4

现在我想保留主分支上的所有四个提交,我的主分支 git log 应按以下顺序查看

Commit-3
commit-4
commit-2
commit-1

我如何实现它?

2 个答案:

答案 0 :(得分:1)

我会这样做

首先提交提交1,2,3

git commit -am "commit 1"
git commit -am "commit 2"
git commit -am "commit 3"

然后你回去提交2

git checkout <<hash or HEAD^>

然后你提交提交4

git commit -am "commit 4"

然后你将你的分离头合并到新头

git merge <<reference of commit 3>>

如果有更好的方法,请注释掉

答案 1 :(得分:1)

一旦结帐commit-2,您就在detached HEAD mode

要做的第一件事就是创建一个commit-4所在的分支:

git checkout commit-2
git add ...
git commit -m "commit-4"
git checkout -b tmp

1--2--3 (master) 
    \
     4 (tmp) 

然后,您可以在其上重新master,以便在commit-3

之上重播commit-4
git rebase tmp master

1--2--4--3 (master, tmp)