2013-03-11 53 views
1

我想我错过了关于GIT分支的一些基本想法。基于服务器创建一个新的GIT分支没有本地更改

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

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

我想停止一切我做(修改提交和未推送的提交),创建一个特性分支是基于服务器没有我本地所做的更改,修复bug,提交和推送,然后回到主人身边,重新打工并继续工作。

我认为,以下将工作:

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

的问题在于分支“修正错误”包括我的主人在它的状态所做的更改。

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

回答

2

干净的方法就是提交当前的工作提高到一个局部特征分支(在释放状态保持主),然后切换到掌握并修正错误的有(或基于一个分支在主人)。

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 
+0

第一个选项就是我要做的事情,所以即使我不准备提交,我我会压扁提交。谢谢! – 2013-03-11 16:46:21

0

首先,隐藏你在做什么。

git stash 

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

git checkout remotes/origin/master 

你会在一个分离的头状态,因为你不想直接提交到一个远程跟踪分支。因此,创建一个基于远程跟踪分支的错误修复分支。

git checkout -b bugFix 

谬以千里

0

假设远程的被命名为“起源”,远程分支所谓的“生产”和你目前的主 - 你会做以下几点:

$ 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 

,你因此回到你开始的地方(与该公司除了英雄!)

相关问题