从当前签出主机创建分支?

在服务器上有一个 git 控制的文件夹,其中主分支被签出,整个文件堆被修改而未被提交。有没有办法将更改提交到一个单独的分支,这样我就可以返回到一个干净的版本?

即我想有效地撤销所有这些人的更改,但是把它们存储在另一个机会中,这样如果那个人想要他们的更改,他们就可以切换到那个分支。

(是的,我知道 Git 不是这样设计的,但这就是我的情况!)非常感谢你的建议。

97376 次浏览

你总是可以把你的变化藏起来。

git stash
git checkout -b bravenewmaster
git stash apply

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

首先,移动到基于当前 HEAD 的不同分支是这样执行的:

git checkout -b newbranch

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

git commit -a

回到主分支:

git checkout master

以前未提交的更改将全部位于新分支上,而 master 仍然处于没有这些更改的状态。

这种方法很有用:

git checkout -B <new_branch> <start point>

地点:

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

更多细节参见: man git-checkout