编码后,我意识到我犯了一个错误。我用了
git checkout 7e57dbf5a7245...
恢复到较旧的提交。现在当我提交使用
git commit -a
它说我正在致力于[分离的 HEAD f69ae14]。当我使用
git push origin master
它说一切都是最新的......我输入什么来将这个[分离的头]提交推回主人?
您当前的日志必须是这样的
*-*-*-*[7e57db]-*-*-*<master>
\
*-*-*-*<HEAD>
现在您应该重置master
到当前HEAD
位置,创建master
当前分支并将其推送到origin
:
git branch -f master HEAD
git checkout master
git push origin master
请注意,您将丢失7e57db
和 current之间的所有提交master
。
离开 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
更新远程参考。
您可以通过使用将头部重置为分离的头部
git reset --hard 7e57dbf5a7245...
# and then
git push origin master --force
通过这样做,您将失去新旧头之间的更改。
如果您想保留这些更改,您可以从分离的头创建一个新分支并将其合并到您的头中,然后提交您的更改并推送新分支。