服务器上有一个 git 控制的文件夹,其中主分支被签出,并且一大堆文件已被修改且未提交。有没有办法让我将更改提交到单独的分支,以便我可以回到干净的版本?
即我想有效地撤消所有这些人的更改,但将它们存储在另一个机会中,这样如果那个人想要他们的更改,他们可以切换到该分支。
(是的,我知道这不是 git 的设计方式,但这是我的情况!)非常感谢任何想法。
服务器上有一个 git 控制的文件夹,其中主分支被签出,并且一大堆文件已被修改且未提交。有没有办法让我将更改提交到单独的分支,以便我可以回到干净的版本?
即我想有效地撤消所有这些人的更改,但将它们存储在另一个机会中,这样如果那个人想要他们的更改,他们可以切换到该分支。
(是的,我知道这不是 git 的设计方式,但这是我的情况!)非常感谢任何想法。
首先移动到基于当前 HEAD 的不同分支是这样执行的:
git checkout -b newbranch
提交所有更改(假设没有新添加的文件,否则git add
它们):
git commit -a
回到主分支:
git checkout master
之前未提交的更改都将在 newbranch 分支上,而 master 仍将处于没有这些更改的状态。
您可以随时隐藏您的更改。
git stash
git checkout -b bravenewmaster
git stash apply
还要记住,如果你提交到“错误的”分支,你总是可以将该分支移回,因为分支只不过是指向提交的指针。
这个方法很有用:
git checkout -B <new_branch> <start point>
在哪里:
<new_branch>
是你的新分支(例如my_branch
)<start point>
是您的起始分支(master
在您的情况下)-B
从 开始创建新分支<start point>
,如果它已经存在,则将其重置为(它不会因为-b
分支已经存在而失败)-m
在切换分支时指定很有用,这将在当前分支和工作树内容之间执行三向合并(对脚本很有用)。请参阅:man git-checkout
了解更多详情。