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

cor*_*ras 76 git version-control dvcs git-branch

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

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

(是的,我知道这不是git的设计工作,但这是我的情况!)任何想法非常感谢.

CB *_*ley 134

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

git checkout -b newbranch
Run Code Online (Sandbox Code Playgroud)

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

git commit -a
Run Code Online (Sandbox Code Playgroud)

回到主分支:

git checkout master
Run Code Online (Sandbox Code Playgroud)

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

  • *说明:*工作存储库和暂存更改的内容不属于任何分支.简单地创建关闭HEAD(最后修订版)的新分支就足以让新提交继续创建刚刚创建的分支`<newbranch>`. (5认同)

ken*_*orb 14

这个方法很有用:

git checkout -B <new_branch> <start point>
Run Code Online (Sandbox Code Playgroud)

哪里:

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

请参阅:man git-checkout了解更多详情.


Mic*_*ker 13

您可以随时存储更改.

git stash
git checkout -b bravenewmaster
git stash apply
Run Code Online (Sandbox Code Playgroud)

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

  • 如果您要立即重新应用相同的更改,为什么还要费心?你也可以做`git checkout -b bravenewmaster`.它打字较少,不会不必要地触及所有已更改的文件. (3认同)