2011-07-20 108 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

谢谢 - 我会更新我的问题来解决这个问题。 –