基于服务器创建新的GIT分支,无需进行本地更改

时间:2013-03-11 16:22:05

标签: git git-branch

我想我错过了一些关于GIT分支的基本想法。

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

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

我想停止我正在做的一切(修改过的提交和未推送的提交),创建一个基于服务器的功能分支,而不是我在本地做的更改,修复bug,提交和推送,然后回到主人,改变并继续工作。

我认为以下内容可行:

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

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

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

3 个答案:

答案 0 :(得分:3)

最干净的方法是将您当前的工作提交到本地功能分支(保持master处于可释放状态),然后切换到master并在那里制作bugfix(或在基于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

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

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

答案 1 :(得分:0)

首先,藏匿你在做什么。

git stash

您的存储库有一个远程跟踪分支,与您最近从原点获得的分支相匹配;切换到那个分支。

git checkout remotes/origin/master

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

git checkout -b bugFix

黑客攻击

答案 2 :(得分:0)

假设遥控器名为'origin',则远程分支称为'production',您当前正在使用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

然后你又回到了你开始的地方(以及公司的英雄!)

相关问题