国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Git Cherry-pick使用

這篇具有很好參考價值的文章主要介紹了Git Cherry-pick使用。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

概述

無論項(xiàng)目大小,當(dāng)你和一群程序員一起工作時,處理多個 Git 分支之間的變更都會變得很困難。有時,與其把整個 Git 分支合并到另一個分支,不如選擇并移動幾個特定的提交。這個過程被稱為 "挑揀", 即 Cherry-pick。

本文將介紹 "Cherry-pick" 的內(nèi)容、原因和方法。

讓我們開始吧~

什么是 Cherry-pick?

通過 cherry-pick 命令,Git 可以將任何分支中的選定提交合并到當(dāng)前的 Git HEAD 分支中。

在執(zhí)行 git mergegit rebase 時,一個分支的所有提交都會被合并。而 cherry-pick 命令則允許你選擇單個提交進(jìn)行整合。

區(qū)別圖示如下:

Git Cherry-pick使用
△ 使用 merge 的情況: 在執(zhí)行 merge 或 rebase 時,一個分支的所有提交都會被整合。

Git Cherry-pick使用
△ 使用 cherry-pick 的情況: 允許你選擇個別提交進(jìn)行整合。在本例中,只有 C2 被整合到主分支,而不是 C4。

為什么要用 Cherry-pick?

下面的情況可能更容易理解 "Cherry-pick" 的作用。

想象一下,您正在為即將到來的每周 spring 實(shí)施新功能。代碼準(zhǔn)備就緒后,您將把它推送到遠(yuǎn)程分支,準(zhǔn)備進(jìn)行測試。

然而,客戶并不滿意所有的修改,要求你只提交某些修改。因?yàn)榭蛻暨€沒有批準(zhǔn)下次發(fā)布的所有修改,所以 git rebase 不會產(chǎn)生預(yù)期的結(jié)果。因?yàn)?git rebasegit merge 會將上一次沖刺的所有調(diào)整都納入其中。

而 "Cherry-pick" 就能解決這個問題!因?yàn)?"Cherry-pick" 只關(guān)注提交中添加的改動,所以它只會帶來已批準(zhǔn)的改動,而不會添加其他提交。

使用 "Cherry-pick" 還有其他一些原因:

  • 這對修復(fù) bug 非常重要,因?yàn)殚_發(fā)分支中的 bug 都是用它們的提交設(shè)置的。
  • 通過使用 git cherry-pick,而不是其他應(yīng)用指定提交的改動的選項(xiàng)(如 git diff),可以避免不必要的爭斗。
  • 如果因?yàn)楦?Git 分支的版本不兼容而無法進(jìn)行完整的分支合并,它就是一個很有用的工具。

什么時候用 Cherry-pick?

簡而言之就是:盡量少用。之所以要盡量少用 cherry-pick,是因?yàn)樗苋菀桩a(chǎn)生 "重復(fù)"提交:當(dāng)你使用 cherry-pick 將一個提交整合到 HEAD 分支時,Git 必須創(chuàng)建一個內(nèi)容完全相同的新提交。不過,這是一個全新的提交對象,有自己的 SHA 標(biāo)識符。同時也會失去跟蹤提交歷史的能力。

如果你不按順序提交了很多提交,這些提交就會被記錄在你的分支中,這可能會導(dǎo)致你的 Git 分支出現(xiàn)不理想的結(jié)果。

只要能用傳統(tǒng)的合并或重置來整合,就應(yīng)該這么做。Cherry-pick 應(yīng)保留給不可能這樣做的情況,例如必須創(chuàng)建 Hotfix 或只想從一個廢棄的分支中保存一個或幾個提交。

如何使用 Cherry-pick 命令?

流程概述

下面是使用步驟:

  1. 拉取本地分支。使用 git fetch
  2. 回到要合并的分支。你可能會通過運(yùn)行 git checkout main 來做到這一點(diǎn)。
  3. 找到要拉入分支的提交。轉(zhuǎn)到 git log,為每條提交獲取唯一的提交哈希值。
  4. "Cherry-pick" 您想要加入該分支的提交。運(yùn)行以下命令:git cherry-pick <commit sha>。這將只把這個提交拉入當(dāng)前分支。
  5. (可選) 在某些情況下, 可能需要手動解決沖突.
  6. 像往常一樣推送這個分支: git push origin main。

具體命令

cherry-pick 命令的最簡單形式中,你只需使用要集成到當(dāng)前 HEAD 分支中的提交的 SHA 標(biāo)識符即可。

要獲取提交哈希值,可以使用 git log 命令:

git log --oneline

知道 commit 的哈希值后,就可以使用 cherry-pick 命令。

語法如下:

git cherry-pick <commit sha>

??Notes:

<commit sha> 可以是多個

例如:

git cherry-pick  85c5532

這將把指定的更改專用于當(dāng)前已簽出的分支。

如果你想做進(jìn)一步修改,也可以指示 Git 在你的工作副本中添加提交改動。

語法如下:

git cherry-pick <commit sha> --no-commit

如:

git cherry-pick 85c5532 --no-commit

如果您想同時選擇多個提交,請?zhí)砑铀鼈兊奶峤还V?,中間用空格隔開:

git cherry-pick hash1 hash3

在挑選提交時,不能使用 git pull 命令,因?yàn)樗鼤囊粋€版本庫中獲取提交并自動合并到另一個版本庫中。cherry-pick 命令是專門用來避免這種情況發(fā)生的工具;取而代之的是使用 git fetch,它會獲取提交但不應(yīng)用它們。

Cherry-pick 實(shí)戰(zhàn)

要嘗試該過程,請啟動終端并生成一個示例項(xiàng)目:

mkdir fruit.git
cd fruit.git
git init .

創(chuàng)建一些數(shù)據(jù)并提交:

echo "Kiwifruit" > fruit.txt
git add fruit.txt
git commit -m 'First commit'

現(xiàn)在,創(chuàng)建一個項(xiàng)目的 fork 來代表遠(yuǎn)程開發(fā)者:

mkdir ~/fruit.fork
cd !$
echo "Strawberry" >> fruit.txt
git add fruit.txt
git commit -m 'Added a fruit"

這是一個有效的提交?,F(xiàn)在,創(chuàng)建一個糟糕的提交,代表你不想合并到項(xiàng)目中的內(nèi)容:

echo "Rhubarb" >> fruit.txt
git add fruit.txt
git commit -m 'Added a vegetable that tastes like a fruit"

返回你的權(quán)威版本庫,從你假想的開發(fā)者那里獲取提交(使用 git fetch 獲取):

$ cd ~/fruit.git
$ git remote add dev ~/fruit.fork
$ git fetch dev
remote: Counting objects: 6, done. 
remote: Compressing objects: 100% (2/2), done. 
remote: Total 6 (delta 0), reused 0 (delta 0) 
Unpacking objects: 100% (6/6), done...
$ git log –oneline dev/master
e858ab2 Added a vegetable that tastes like a fruit 
0664292 Added a fruit 
b56e0f8 First commit

你已經(jīng)從假想的開發(fā)者那里獲取了提交,但還沒有將它們合并到你的版本庫中。你想接受第二個提交,但不想接受第三個,所以要使用 cherry-pick

git cherry-pick 0664292

現(xiàn)在,第二個提交就在你的版本庫中:

$ cat fruit.txt
Kiwifruit
Strawberry

將更改推送到遠(yuǎn)程服務(wù)器,就大功告成了!

Cherry-pick 多個提交實(shí)戰(zhàn)

從 dev 挑選數(shù)個 commits 進(jìn)行合并:

git cherry-pick  85c5532  366a196  53ebe44 --no-commits

然后, 可能第一個合并會出現(xiàn)沖突, 手動解決沖突, 并git add 具體文件或 git rm.

繼續(xù) cherry-pick:

git cherry-pick --continue

第二個提交可能沒有沖突, 直接合并.

第三個提交可能又有沖突, 手動解決沖突, 并git add 具體文件或 git rm.

繼續(xù) cherry-pick:

git cherry-pick --continue

最后再執(zhí)行 git cherry-pick --continue, 會提示你沒有在運(yùn)行的任務(wù).

此時, 可以提交:

git push origin main

總結(jié)

Cherry-pick 是一個功能強(qiáng)大的命令,如果沒有正確理解可能發(fā)生的情況,使用它可能會帶來麻煩。不過,當(dāng)你搞砸并提交到錯誤的分支時,它可能會拯救你的生命(至少是你的日常工作)。

???參考文檔

  • What is Git cherry-picking? | Opensource.com
  • How to merge only specific commits from a pull request with git cherry-pick | MattStauffer.com
  • Git Cherry Pick - How to use the "cherry-pick" command in Git | Learn Version Control with Git

三人行, 必有我?guī)? 知識共享, 天下為公. 本文由東風(fēng)微鳴技術(shù)博客 EWhisper.cn 編寫.文章來源地址http://www.zghlxwxcb.cn/news/detail-642201.html

到了這里,關(guān)于Git Cherry-pick使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【Git】Git cherry-pick

    1.指令效果與基本用法 在 Git 的文檔中,對于 cherry-pick 指令的描述如下: git cherry-pick 命令用來獲得在單個提交中引入的變更,然后嘗試將作為一個新的提交引入到你當(dāng)前分支上。 從一個分支單獨(dú)一個或者兩個提交而不是合并整個分支的所有變更是非常有用的。 該命令的基本

    2024年02月09日
    瀏覽(16)
  • Git cherry-pick詳解

    Git cherry-pick詳解

    此文在閱讀前需要有一定的git命令基礎(chǔ),若基礎(chǔ)尚未掌握,建議先閱讀這篇文章Git命令播報詳版 對于多分支的代碼庫,將代碼從一個分支引入到另一個分支是常見需求。 這時分兩種情況。一種情況是,你需要另一個分支的所有代碼變動,那么就采用合并( git merge )。另一種

    2024年02月12日
    瀏覽(27)
  • git cherry-pick 用法

    git cherry-pick 用法

    說明:本人基于 master 新建分支 master-fxd,那么目標(biāo)分支為 master-fxd 說明,其他分支例如 dev 提交的代碼,使用 jihulab.com 比較 master-fxd 和 dev 分支,下圖右側(cè)復(fù)制單個提交 id

    2024年02月12日
    瀏覽(15)
  • Git 的 Cherry-Pick

    Git 的 Cherry-Pick

    cherry-pick 是 Git 版本控制工具中的一個命令,和 commit 、pull 一樣,它只是一個命令。 cherry-pick 和它的名稱一樣,精心挑選,挑選一個我們需要的 commit 進(jìn)行操作。它可以用于將在其他分支上的 commit 修改,移植到當(dāng)前的分支。 一個很常見的場景,就是想在某個穩(wěn)定版本上,添

    2024年02月04日
    瀏覽(16)
  • Git常用命令cherry-pick

    將指定的提交應(yīng)用于其他分支,可以用于恢復(fù)不小心撤銷(revert/reset)的提交。 對于多分支的代碼庫,將代碼從一個分支轉(zhuǎn)移到另一個分支是常見需求。 這時分兩種情況。一種情況是,你需要另一個分支的所有代碼變動,那么就采用合并 git merge 。另一種情 況是,你只需要

    2024年02月14日
    瀏覽(17)
  • git 常用命令 Cherry-pick

    [Ref] git cherry-pick 教程 Further Reading : Git常用命令匯總

    2024年02月08日
    瀏覽(22)
  • Git cherry-pick命令詳解

    個人中心 DownLoad Git中的 cherry-pick 命令用于選擇一個提交并將其應(yīng)用到當(dāng)前分支上,而不必合并整個分支。這在需要在不影響其他代碼的情況下將單個提交應(yīng)用到其他分支時非常有用。以下是cherry-pick命令的詳細(xì)介紹。 復(fù)制代碼 git cherry-pick commit-hash commit-hash :要應(yīng)用的提交的

    2024年02月08日
    瀏覽(32)
  • git cherry-pick命令用法詳解

    git cherry-pick命令用法詳解

    ????????想在某個穩(wěn)定版本上,添加一個剛開發(fā)完成的版本中的功能。就可以使用 Cherry-pick 命令,將這個功能相關(guān)的 commit 提取出來,合入穩(wěn)定版本的分支上。 ????????對于多分支的代碼庫,將代碼從一個分支轉(zhuǎn)移到另一個分支是常見需求。 通常開發(fā)時分兩種情況:

    2024年01月25日
    瀏覽(20)
  • Git:不同倉庫之間的cherry-pick

    一、操作步驟 添加遠(yuǎn)程倉庫到本地 拉取該遠(yuǎn)程倉庫的指定分支 運(yùn)行cherry-pick命令 push到遠(yuǎn)程

    2024年02月13日
    瀏覽(15)
  • Git Cherry-pick:選擇性合并 Git 提交

    在 Git 中,有時候我們需要從一個分支中選擇性地合并一個或多個提交到當(dāng)前分支。Git 提供了一個稱為 cherry-pick 的命令來執(zhí)行這個操作。 cherry-pick 命令可以在一個分支上選擇性地應(yīng)用另一個分支或提交中的一個或多個提交。這對于合并單獨(dú)的 bug 修復(fù)或其他小型改動非常有用

    2024年02月11日
    瀏覽(45)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包