[英]Git create new branch from feature branch without the branch commit history
[英]git create new branch from a specific branch history and commit
我基本上想做的是:
git checkout branchA
git checkout -b branchB <commit_id>
它創建新branchB
從分支<commit_id>
上branchA
。
題:
我在這里要詳細介紹,但是我要問的原因是為了幫助理解git history的工作原理並節省一些打字。 (上面的命令可能是四個命令,而不是兩個...)如何使用本地git函數將其轉換為一個? 題:
有沒有一種更容易/單行的方法與上述相同?
我當時只是git checkout -b branchB <commit_id>
但是如果我在branchC
,那可能行不通,因為branchC
的日志/歷史記錄可能與branchA
。
背景:
對於這種特定情況,我的目的是在生產中引入錯誤的情況下,快速恢復到先前的提交。 但是,我仍然想保留我的新代碼,然后丟棄新分支之一,將舊代碼推回服務器。
只是
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不同。
一個存儲庫中只有一個歷史記錄。
對於這種特定情況,我的目的是在生產中引入錯誤的情況下,快速恢復到先前的提交。 但是,我仍然想保留我的新代碼,然后丟棄新分支之一,將舊代碼推回服務器。
聽起來像標簽 ;)
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
這些命令
git checkout -b branchB <commit_id>
git checkout -b branchB branchA
表示我想基於分支(或提交)Y創建分支X ,因此您不必在Y中即可工作。
您首先需要移至基本分支的情況是:
git checkout branchA
git checkout -b branchB
看到我在第二行中沒有提到基礎分支。
另外,請記住,提交不是特定於分支的,它只是一個指針,僅此而已。 可以刪除,移動,重命名分支等。但是提交不會改變。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.