合并还是重新制作?

时间:2018-06-04 05:45:37

标签: git github

这是我当前的提交。

commit1 - commit 2 - commit3 - commit4 - cmmit5 (my-app branch)

我检查了commit1并进行了更改

git checkout <commi1's SHA>
// made some changes
git add . && git commit -m "commit prime 1"
// made other changes
git add . && git commit -m "commit prime 2"

现在,我想在my-app分支的顶部合并(?)或rebase(?)。

我不关心提交5,我只是想将我当前更改的commit1放到my-app分支的顶部(不合并但是重写!)。所以输出将低于

commit1 - commit 2 - commit3 - commit4 - cmmit5 - commit prime 1 - commit prime2" (my-app branch)
  • 我认为我不需要&#34;合并&#34; commit 5commit prime 2
  • 也许我应该使用rebase?

这是我当前的终端提示:

jbaaa at jo's computer ~/directory on (HEAD detached from 8a36f955fc)*

git status output:

HEAD detached from 8a36f955fc

无需承诺,工作树干净。

假设commit5是

'12345'
''
''

commit1是

'1'
''
''

commit prime2是

'1' 
'prime1 and prime2'

最终结果必须是

'1'
'prime1 and prime2'

如果我们merge,我们会收到此结果。我们如何避免它?

'12345'
'prime1 and prime2'

2 个答案:

答案 0 :(得分:4)

你所谓的&#34; HEAD分离&#34;状态,意味着你不在分支机构工作。首先,将您当前的工作分成一个分支。

git checkout -b my-feature

如果要删除提交5,请将您的工作重新设置为提交4。

git rebase <commit4's SHA>

你得到的将是这样的:

c1 - c2 - c3 - c4 - c5 (my-app)
                \
                 p1 - p2 (my-feature)

由于您不关心提交5,请将my-app重置为my-feature(p2)。

git checkout my-app
git reset --hard my-feature

最终结果:

                 c5 # no branch
                /
c1 - c2 - c3 - c4 - p1 - p2 (my-app, my-feature)
  

我害怕使用rebase

如果您不确定变基,请在开始变基之前保持当前分支不变并创建新分支,例如:

git checkout -b my-feature-rebased

最终结果:

                 c5 # no branch
                /
c1 - c2 - c3 - c4 - p1 - p2 (my-app, my-feature-rebased)
 \
  p1 - p2 (my-feature) # backup

答案 1 :(得分:-1)

你可以用 git rest --hard <commit1 hash> 将你的头转向commit1