2011-07-20 110 views
4

這可能很簡單,但我目前是一個git noob,並且還沒有把我的頭圍繞git分支模型。git分支 - 如何使當前的主分支,然後恢復主回到以前的版本?

假設我目前沒有master以外的分支,但現在自上次提交以來我做了一些更改,我決定不想保留(注意:更改尚未提交)。我不想擺脫這些變化 - 但我想把它們放在他們自己的分支中(例如experimental_stuff),然後繼續從我以前的提交開發。所以我猜這個步驟是:

  • 使當前的主分支(git branch experimental_stuff?)
  • 回到前提交
  • 使這個我的新主人分公司,使未來的承諾從這裏繼續(git checkout <last_commit>?) (git ????)

這是正確的方法,我需要什麼git命令的最後一部分(如果有)?

[注意:這只是我個人使用的本地git存儲庫,如果有任何區別的話。]

回答

7

你差不多完成了。

假設您已經對開發文件進行了提交。然後..

git branch experimental_stuff

git reset --hard HEAD^ (go back one previous commit of your master branch to continue your development)

假設你還沒有提交你的開發文件。然後.. 您需要將現有的更改保存到一個臨時目錄

git stash

git checkout -b experimental_stuff (create and change branch to experiental_stuff)

git stash pop (populate the temporary directory into experimental branch)

git checkout master (return back to master, and no need to go back the previous commit this time as you don't have that commit)

+0

好的 - 謝謝 - 如果我還沒有提交我目前的修改,會怎麼樣?我只是提交他們,然後使用上述? –

+0

那麼,您可以將這些當前更改(我們稱之爲工作目錄特定)保存到臨時空間。好吧,也許我在答案中增加了更多。 –

+0

推薦你安裝gitk,這是一個運行git的GUI應用程序,一旦你熟悉git如何在GUI上工作,命令行工具將會是一個更快的應用程序來幫助你。 –

2

Suppose I currently have no branches as such

只是爲了糾正你:你總是在Git中至少一個分支。即使主人是一個分支,具有與任何其他分支相同的功能。而Git不處理名爲master的分支與另一個分支不同。這只是一個約定,大多數開發者將其主分支命名爲「主」,但您不需要。你甚至可以刪除你的主分支並創建分支,如開發,發佈等等。對於你自己的問題:Kit Ho的答案很好。

+0

謝謝 - 我會更新我的問題來解決這個問題。 –