2012-06-24 57 views
0

编码后,我意识到我犯了一个错误。我用如何从github的结帐中推送?

git checkout 7e57dbf5a7245... 

恢复到旧的承诺。现在当我承诺使用

git commit -a 

它说我正在承诺一个[分离HEAD f69ae14]。当我使用

git push origin master 

它说一切的最新...我怎么输入推这个[分离的头]提交回主?

+1

为什么你添加rails(3)标签到这个问题? –

回答

1

您当前日志必须是这样的

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

现在你应该重新master当前HEAD位置,使master当前分支并将其推到origin

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

请注意,您丢失7e57db与当前master之间的所有提交。

0

您可以通过使用

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

通过这样做,你将失去新老头之间更改的头分离的头部复位。

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

1

去掉马克斯说,你的日志最初的样子:

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

你结帐7e57db和git commit,和你结束了:

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

你真的喜欢什么要做的是在HEAD上进行提交,并将7e57db上引入的更改重放到master上。您使用的命令是git rebase。特别是,一旦你做了提交,你可以运行:

git rebase master 

在这一点上你的历史将是:

*-*[7e57db]-*-*<old-master>-*<master> 

然后,你可以git push origin master更新远程参考。