0

编码后,我意识到我犯了一个错误。我用了

git checkout 7e57dbf5a7245...

恢复到较旧的提交。现在当我提交使用

git commit -a

它说我正在致力于[分离的 HEAD f69ae14]。当我使用

git push origin master

它说一切都是最新的......我输入什么来将这个[分离的头]提交推回主人?

4

3 回答 3

1

您当前的日志必须是这样的

*-*-*-*[7e57db]-*-*-*<master>
       \
        *-*-*-*<HEAD>

现在您应该重置master到当前HEAD位置,创建master当前分支并将其推送到origin

git branch -f master HEAD
git checkout master
git push origin master

请注意,您将丢失7e57db和 current之间的所有提交master

于 2012-06-24T00:44:45.137 回答
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更新远程参考。

于 2012-06-24T23:30:57.887 回答
0

您可以通过使用将头部重置为分离的头部

git reset --hard 7e57dbf5a7245...
# and then 
git push origin master --force

通过这样做,您将失去新旧头之间的更改。

如果您想保留这些更改,您可以从分离的头创建一个新分支并将其合并到您的头中,然后提交您的更改并推送新分支。

于 2012-06-24T00:43:21.643 回答