这是我当前的提交。
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)
commit 5
和commit prime 2
。这是我当前的终端提示:
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'
答案 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