编码后,我发现自己犯了一个错误。我用了
git checkout 7e57dbf5a7245...
恢复旧版提交。现在当我使用
时git commit -a
它说我正在承诺[分离的HEAD f69ae14]。当我使用
git push origin master
它说一切都是最新的...我打算怎么把这个[超级头]提交回主人?
答案 0 :(得分:1)
您当前的日志必须是这样的
*-*-*-*[7e57db]-*-*-*<master>
\
*-*-*-*<HEAD>
现在,您应该将master
重置为当前HEAD
位置,将master
当前分支设置为origin
:
git branch -f master HEAD
git checkout master
git push origin master
请注意,您将丢失7e57db
与当前master
之间的所有提交。
答案 1 :(得分:1)
关于max所说的,你的日志最初看起来像是:
*-*[7e57db]-*-*<master>
您结帐7e57db和git commit
,最终得到:
*-*[7e57db]-*-*<master>
\
*<HEAD>
您真正想做的是在HEAD上进行提交,并将7e57db上引入的更改重播到master上。您使用的命令是git rebase
。具体来说,一旦你完成了提交,你就会运行:
git rebase master
此时你的历史将是:
*-*[7e57db]-*-*<old-master>-*<master>
然后您可以git push origin master
更新远程参考号。
答案 2 :(得分:0)
您可以使用
将头部重置为分离的头部git reset --hard 7e57dbf5a7245...
# and then
git push origin master --force
通过这样做,你将失去旧头和新头之间的变化。
如果要保留这些更改,可以从分离的头创建一个新分支并将其合并到头部,然后提交更改并推送新分支。