服务器上有一个git控制文件夹,其中检出主分支,并且修改了一大堆文件但未提交。有没有办法让我将更改提交到一个单独的分支,以便我可以回到一个干净的版本?
即我希望有效地撤消所有这些人的变化,但是将它们存储在另一个机会中,所以如果那个人想要他们的变化,他们可以切换到那个分支。
(是的,我知道这不是git的设计方式,但这是我的情况!)任何想法都非常感激。
答案 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
还要记住,如果你提交“错误”分支,你总是可以移回那个分支,因为分支只不过是指向提交的指针。