Git从当前检出的主人创建分支?

时间:2009-09-21 06:41:10

标签: git version-control dvcs git-branch

服务器上有一个git控制文件夹,其中检出主分支,并且修改了一大堆文件但未提交。有没有办法让我将更改提交到一个单独的分支,以便我可以回到一个干净的版本?

即我希望有效地撤消所有这些人的变化,但是将它们存储在另一个机会中,所以如果那个人想要他们的变化,他们可以切换到那个分支。

(是的,我知道这不是git的设计方式,但这是我的情况!)任何想法都非常感激。

3 个答案:

答案 0 :(得分:133)

首先,移动到基于当前HEAD的不同分支,执行方式如下:

git checkout -b newbranch

提交所有更改(假设没有新添加的文件,否则为git add):

git commit -a

回到主分支:

git checkout master

之前未提交的更改都将在newbranch分支上,并且master仍然处于没有这些更改的状态。

答案 1 :(得分:14)

此方法很有用:

git checkout -B <new_branch> <start point>

其中:

  • <new_branch>是您的新分支(例如my_branch
  • <start point>是您的起始分支(在您的情况下为master
  • -B<start point>开始创建新分支,如果它已经存在,则将其重置为(当分支已存在时,它不会以-b失败)
  • 有时候-m可以指定何时切换分支,这将在当前分支和工作树内容之间执行三向合并(对脚本有用)。

有关详细信息,请参阅:man git-checkout

答案 2 :(得分:13)

您可以随时存储更改。

git stash
git checkout -b bravenewmaster
git stash apply

还要记住,如果你提交“错误”分支,你总是可以移回那个分支,因为分支只不过是指向提交的指针。