簡體   English   中英

git從特定的分支歷史創建新分支並提交

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM