如何从github的结账推出?

时间:2012-06-24 00:26:58

标签: git github

编码后,我发现自己犯了一个错误。我用了

git checkout 7e57dbf5a7245...

恢复旧版提交。现在当我使用

git commit -a

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

git push origin master

它说一切都是最新的...我打算怎么把这个[超级头]提交回主人?

3 个答案:

答案 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
通过这样做,你将失去旧头和新头之间的变化。

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