2014-10-19 89 views
0

我試圖使用Git的一個個人項目只是習慣了的緣故,但我進入的情況,我不知道該怎麼收拾......Git的 - 讓我們回到一個具體的承諾

我不記得它是怎麼發生的,我想我試着回滾一些提交,但現在我的混帳是一團糟。我試過其他的東西,我不知道它們是什麼,這是我不應該擁有的。

這裏是它看起來像一個畫面: enter image description here

我只是想回到選擇提交(「每一次新的浪潮,遊戲......」)。

我確定這很簡單,但我迷失了所有這些分支和東西。所以如果有人能告訴我如何回到這個問題,不僅僅是爲了我的工作副本,而且是在服務器上,這將會很好。

感謝:-)

+2

[恢復到以前的Git提交]的可能重複(http://stackoverflow.com/questions/4114095/revert-to-a-previous-git-commit) – rightfold 2014-10-19 10:38:20

回答

1

縱觀歷史,似乎你COMMITED犯下,櫻桃採摘它的另一個分支,然後試圖重新恢復它的兩個分支。

要清理一下我首先建議你確保所有的提交(特別是包括在頂部的未提交更改),不包含你不想失去任何信息。

之後,您可以使用以下命令來丟掉其他所有東西,然後回到那一個提交。請注意,這確實會削減樹,因此請確保您沒有任何要保留的數據。

git reset --hard 8791cc9176 

這會將您當前的分支重置爲該提交,忽略其他所有內容。所以你可能想在那裏重置你的本地主人。之後,您可以刪除使用git branch -D SafeSafe分支(注意是大寫D能夠刪除未合併到其他分支的分支,除此之外的情況下,使用較低的情況下d以確保不會丟失信息)。

由於您的遙控器也更高級的狀態,你可能想擺脫那些額外的提交也有。請注意,默認情況下,您不能只推送較舊的歷史記錄並將其替換爲遠程記錄。相反,您必須使用git push --force origin master(或簡稱-f)強制推送它。儘管可以將它用於個人項目,但您應該知道,在與他人合作或存儲庫公開時,絕不應該這樣做。這會將遠程的歷史記錄更改爲其他用戶訪問遠程設備時無法自動處理的狀態。所以他們可能會遇到衝突。這就是爲什麼你應該(a)總是確保你所推送的內容真的很好推送,並且(b)通過增加提交(例如,恢復提交,就像你已經在這裏使用的那樣),總是在遠程撤銷一些東西。

+0

這工作!謝謝:-) 謝謝你的詳細解釋,幫助我理解我做了什麼來整理這件事。 – Jeahel 2014-10-19 13:52:07

0

在你的資料庫的無序狀態,可以使用git checkout --detach <commit>去任何承諾。例如,git checkout --detach 8791cc9將帶您進入「每一次新浪潮,遊戲......」提交。 git checkout主要用於從一個分支的頂端轉到另一個分支,但--detach可用於檢出任何提交。

如果您需要進行任何修改犯下,你需要創建一個分支出來的:git checkout -b new_branch <commit>

有關更多信息,請參閱git-checkout聯機幫助頁。