在不进行本地更改的情况下基于服务器创建新的GIT分支

在不进行本地更改的情况下基于服务器创建新的GIT分支,git,git-branch,Git,Git Branch,我想我缺少了一些关于GIT分支的基本概念 假设我已经在我的机器上克隆了一个存储库,并开始工作(在本地“master”上) 现在有人告诉我生产中的一个bug 我想停止我正在做的一切(修改的归档和未推送的提交),创建一个基于服务器的功能分支,而不需要我在本地所做的更改,修复错误,提交并推送,然后返回主功能,重新设置基础并继续工作 我认为以下方法可行: $ git clone <some repo> $ vim text.txt $ git checkout -b bugFix $git

我想我缺少了一些关于GIT分支的基本概念

假设我已经在我的机器上克隆了一个存储库,并开始工作(在本地“master”上)

现在有人告诉我生产中的一个bug

我想停止我正在做的一切(修改的归档和未推送的提交),创建一个基于服务器的功能分支,而不需要我在本地所做的更改,修复错误,提交并推送,然后返回主功能,重新设置基础并继续工作

我认为以下方法可行:

$ git clone <some repo>
$ vim text.txt
$ git checkout -b bugFix
$git克隆
$vim text.txt
$git签出-b错误修复
问题是分支“bugFix”包含了我在master中对其状态所做的更改


如何创建干净的分支?

首先,隐藏您正在做的事情

git stash
您的存储库有一个远程跟踪分支,该分支与您上次从源站获得的分支相匹配;转到那个分支

git checkout remotes/origin/master
您将处于分离头状态,因为您不想直接提交到远程跟踪分支。因此,基于远程跟踪分支创建一个bug修复分支

git checkout -b bugFix

Hack away

最干净的方法是将您当前的工作提交到本地功能分支(保持master处于可发布状态),然后切换到master并在那里(或基于master的分支上)进行错误修复

如果您还没有准备好提交(本地)您的工作,您可以使用stash来隐藏更改:

git stash
git fetch
git checkout origin/master
git checkout -b bugFix
... do some work ...
git checkout master
git stash pop

假设远程分支名为“源”,远程分支名为“生产”,并且您当前在master上-您将执行以下操作:

$ git stash   # move your current uncommitted stuff out of the way
$ git checkout -b bugFix remotes/origin/production
# now fix the bug, and commit (to your bugFix branch)
$ git push origin production # back to production
$ git checkout master
$ git stash pop
此时,如果愿意,您可以使用以下方法删除本地错误修复分支:

$ git branch -d bugFix

这样,您就回到了起点(还有公司的英雄!)

我将要做的第一个选择,所以即使我还没有准备好提交,我也会取消提交。谢谢
$ git branch -d bugFix