2012-06-24 52 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更新遠程參考。