2013-03-11 56 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 

,你因此回到你開始的地方(與該公司除了英雄!)

相關問題