2014-04-30 86 views
0

我做這個命令用git:混帳推不更新遠程分支

git push origin mybranch 

口口聲聲說「每一個最新的」,但什麼都沒有發生在服務器端。我認爲我以前做錯了,但我不知道在哪裏:

昨天我做了一個提交號碼[c1]並將提交推送到服務器。然後我試圖從另一個開發拉動更新:

git pull origin another 

然後我犯拉了提交數[C2],並推到服務器。但經過拉項目經常崩潰,所以我決定回滾拉:

git checkout [c1] 

然後我在[c1]中工作並取得3個提交,但並沒有推到服務器。今天晚上,當我試圖將最後一次提交[c5]推送到服務器時,它一直說「一切都是最新的」,但服務器分支始終停留在[c2]。我做了:

git branch 

在我身邊,發現我在(沒有分支)。然後,我做了一個

git checkout -b newbranch 

然後我看到新分支取代(沒有分支)。然後我做了

git push origin newbranch 

最後推送到服務器。但是我不知道在這些命令中發生了什麼?謝謝!

+0

請將您的提交圖添加到您的問題,以便人們可以看到發生了什麼。如果你願意,你可以爭取提交哈希和消息。運行'git log --graph --oneline --decorate --all'並添加相關輸出。 –

回答

1

在GIT你應該對一個分支推一些變化。

發生了什麼事?

這都是因爲下面的命令。

git的結帳[C1]

比方說,在開始你的分支B1和HEAD指向提交[C2]。如果直接簽出commit sha,它會將您置於「分離頭部」狀態,這基本上意味着您的工作副本檢出的當前sha沒有指向它的分支。現在你已經提交了3個提交(不在任何分支上)。所以,拯救你工作的唯一方法就是把你的頭附在某個分支上。那就是你沒有使用命令「git的結帳-b newbranch」什麼

什麼可能已經完成?

,而不是直接檢查出提交[C1],

選項1

如果你不需要的提交[C2],你可能已經恢復了[C2的變化]通過使用 「GIT中還原〔C2〕

選項2

如果你不需要commit [c2]的改變,並且你想從git歷史中刪除它,那麼你可以通過使用「git reset --hard HEAD^」來恢復[C2]推送它使用「git push -f