使用MSYSGIT歷史瀏覽器,我簽出了一個特定的提交。 這是一個錯誤 - 我試圖查看這些文件,並認爲我必須檢查它們才能看到它們。撤消在GIT結帳
從那時起,我一直無法推送任何更多的提交到我的遠程回購(在GITHub上)。我有點理解,但不完全。 [我承認並不完全瞭解結帳的工作方式,請在小菜點上溫和點。]
如何撤消結帳並使事情恢復到之前的狀態?
如果我右鍵點擊「簽出」提交,我可以選擇'刪除此分支'。這會刪除該提交的文件[壞]還是撤消檢出?我吠叫錯了樹嗎?
使用MSYSGIT歷史瀏覽器,我簽出了一個特定的提交。 這是一個錯誤 - 我試圖查看這些文件,並認爲我必須檢查它們才能看到它們。撤消在GIT結帳
從那時起,我一直無法推送任何更多的提交到我的遠程回購(在GITHub上)。我有點理解,但不完全。 [我承認並不完全瞭解結帳的工作方式,請在小菜點上溫和點。]
如何撤消結帳並使事情恢復到之前的狀態?
如果我右鍵點擊「簽出」提交,我可以選擇'刪除此分支'。這會刪除該提交的文件[壞]還是撤消檢出?我吠叫錯了樹嗎?
我的理解是,你不小心簽出了一個早期的提交,然後在你想保留的提交之上做了新的提交。首先,確保你有一個指針,以你現在的工作:
git checkout -b newbranch
然後,結帳你在哪裏之前:
git checkout master
希望這將讓你回到你的主線分支,你可以推到GitHub上像平常一樣。如果再想在你所做的更改拉,就可以合併,(一旦你高興)刪除臨時分支:
git merge newbranch
git branch -d newbranch
分支基本上是一個指針,用C++術語。
您可能想嘗試移動分支以指向不同的提交。爲此,請使用git reset
。
git checkout mybranch
git reset mypreviouscommit
這不會刪除該承諾,但它確實讓mybranch
「點」 mypreviouscommit
。所以,mypreviouscommit
會在master
。
如果你不介意失去您所做的所有更改自上次拉來Github上,你可以簡單地刪除一個新鮮的,新的目錄和
git clone ...
。
我不介意丟失我的其他提交,但它是一個記住的想法。順便說一下,我發現這種態度在GIT中非常普遍(例如,我今天接觸到了這個評論:「有趣,從來沒有面對過這個問題,因爲我定期從主服務器重新創建我的分支,正確的做法很多,特別是如果你有很多的貢獻,但嘿...「[這不是一個非常悲傷的反映使用GIT的不切實際?!] – SamGoody 2009-08-31 07:27:24
如果你不想合併整個newbranch,你也可以選擇cherry提交單個提交。 – Benno 2009-08-30 12:15:19
另外,如果其他人已將提交添加到遠程主服務器,您將無法將主服務器推送到遠程服務器。在那種情況下,做'git pull',然後'git push'應該可以工作。 – 2009-08-30 12:59:52
幹得好!那樣做了! [儘管這個問題還不是很清楚。]但我仍然好奇:如果我在msysgit歷史瀏覽器中按下「刪除此分支」,會發生什麼?它會刪除文件嗎?甚至是在該文件之後做出的所有提交? – SamGoody 2009-08-31 07:21:07