2

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

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

现在有人告诉我生产中的一个错误。

我想停止我正在做的所有事情(修改后的提交和未推送的提交),创建一个基于服务器的功能分支,而不需要我在本地进行的更改,修复错误,提交和推送,然后返回 master ,变基并继续工作。

我认为以下方法会起作用:

$ git clone <some repo>
$ vim text.txt
$ git checkout -b bugFix

问题是分支“bugFix”包括我在 master 中所做的更改。

如何创建一个干净的分支?

4

3 回答 3

5

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

git checkout -b my-feature
git commit -m "add my feature"
git checkout master
git pull --rebase
git checkout -b bugFix
... do some work ...
git checkout my-feature

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

git stash
git fetch
git checkout origin/master
git checkout -b bugFix
... do some work ...
git checkout master
git stash pop
于 2013-03-11T16:33:15.287 回答
1

假设远程被命名为“origin”,远程分支被称为“生产”并且您当前处于 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

此时,您可以删除本地 bugFix 分支,如果您愿意,可以使用:

$ git branch -d bugFix

这样你就回到了你开始的地方(除了公司英雄!)

于 2013-03-11T16:45:11.930 回答
0

首先,隐藏你正在做的事情。

git stash

您的存储库有一个远程跟踪分支,与您上次从 origin 获得的内容相匹配;切换到那个分支。

git checkout remotes/origin/master

您将处于分离状态,因为您不想直接提交到远程跟踪分支。因此,基于远程跟踪分支创建一个错误修复分支。

git checkout -b bugFix

破解

于 2013-03-11T16:30:25.980 回答