2012-06-22 71 views
2

我基本上要做到:混帳從一個特定的分支歷史創造新分支然後提交

git checkout branchA 
git checkout -b branchB <commit_id> 

<commit_id>branchA創建新branchB分支。

問:

我進入細節在這裏,但我問的原因是爲了幫助理解歷史是如何git的作品和節省一點打字。 (上面的命令可能是四個命令而不是兩個...)我如何將它與具有本機git功能的一個相提並論?問:

是否有這樣做上述相同的更簡單/一個行的方式?

我想的只是做git checkout -b branchB <commit_id>但如果我在branchC我,可能將無法正常工作引起的branchC日誌/歷史可能不一樣branchA

背景:

我給這家的具體情況內涵將迅速恢復到以前的承諾的情況下,錯誤被引入到生產。然而,我仍然想保留我的新代碼,然後丟棄新分支,舊代碼被推回服務器。

回答

4

只是

git checkout -b branchB <commit> 

的提交的哈希值是整個版本庫中是唯一的,因此沒有理由改變對branchA之前,因爲結果是完全一樣的。

而且這僅僅是

git checkout <commit> 
git branch branchB 
git checkout branchB 

快捷正如你所看到的第一個命令是一個正常的結算,這將取代你的git checkout branchA反正。

我想的只是做git checkout -b branchB <commit_id>但如果我在branchC我,可能將無法正常工作造成branchC的日誌/歷史可能不一樣branchA。

有一個倉庫只有一個歷史。

對於這種特定情況,我的意圖是快速恢復到以前的提交,以防將錯誤引入生產。然而,我仍然想保留我的新代碼,然後丟棄新分支,舊代碼被推回服務器。

聽起來tags;)

git tag -a -m "Release 1.2.3" v1.2.3 
# Deploy 1.2.3 
#something broken! 
git checkout v1.2.2 
# Deploy 1.2.2 
2

這些命令

git checkout -b branchB <commit_id> 
git checkout -b branchB branchA 

意味着我想創建一個基於分支的分支X(或承諾)Y,因此你不必須在Y中才能工作。

的情況下,是你將需要移動的基層支部第一是:

git checkout branchA 
git checkout -b branchB 

見我沒有提到基地分支在第二行。

另外,請記住,提交不是特定於分支,它只是一個指針而已,僅此而已。一個分支可以被刪除,移動,重命名等,但是提交不會改變。

相關問題