中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

廣州網(wǎng)站建設優(yōu)化中國輿情觀察網(wǎng)

廣州網(wǎng)站建設優(yōu)化,中國輿情觀察網(wǎng),找公司做網(wǎng)站注意事項,濟南市建設局網(wǎng)站概述 無論項目大小,當你和一群程序員一起工作時,處理多個 Git 分支之間的變更都會變得很困難。有時,與其把整個 Git 分支合并到另一個分支,不如選擇并移動幾個特定的提交。這個過程被稱為 "挑揀", 即 Cherry-pick。 本…

概述

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

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

讓我們開始吧~

什么是 Cherry-pick?

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

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

區(qū)別圖示如下:

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

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

為什么要用 Cherry-pick?

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

想象一下,您正在為即將到來的每周 spring 實施新功能。代碼準備就緒后,您將把它推送到遠程分支,準備進行測試。

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

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

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

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

什么時候用 Cherry-pick?

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

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

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

如何使用 Cherry-pick 命令?

流程概述

下面是使用步驟:

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

具體命令

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

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

git log --oneline

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

語法如下:

git cherry-pick <commit sha>

📝Notes:

<commit sha> 可以是多個

例如:

git cherry-pick  85c5532

這將把指定的更改專用于當前已簽出的分支。

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

語法如下:

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

如:

git cherry-pick 85c5532 --no-commit

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

git cherry-pick hash1 hash3

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

Cherry-pick 實戰(zhàn)

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

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)建一個項目的 fork 來代表遠程開發(fā)者:

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

這是一個有效的提交?,F(xiàn)在,創(chuà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

將更改推送到遠程服務器,就大功告成了!

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

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

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, 會提示你沒有在運行的任務.

此時, 可以提交:

git push origin main

總結(jié)

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

📚?參考文檔

  • 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ī)? 知識共享, 天下為公. 本文由東風微鳴技術(shù)博客 EWhisper.cn 編寫.

http://www.risenshineclean.com/news/58740.html

相關(guān)文章:

  • 外貿(mào)網(wǎng)站模板 外貿(mào)網(wǎng)站制作游戲掛機賺錢一小時20
  • 建個網(wǎng)站多少費用游戲代理推廣渠道
  • 網(wǎng)站的建設模式專業(yè)推廣引流團隊
  • 做網(wǎng)站好平臺化百度網(wǎng)頁版主頁
  • 網(wǎng)頁動畫制作軟件網(wǎng)站seo專員
  • 網(wǎng)站建設找金手指排名網(wǎng)站站點
  • 網(wǎng)頁設計與網(wǎng)站建設完全教程代做百度首頁排名價格
  • 四合一小說網(wǎng)站搭建教程seo網(wǎng)站seo
  • 什么是網(wǎng)絡設計制作360搜索引擎優(yōu)化
  • 網(wǎng)站建設的7個基本流程新網(wǎng)站seo
  • 什么網(wǎng)站可以自己做房子設計圖搜索關(guān)鍵詞排名
  • 網(wǎng)站怎么做的黑客入侵網(wǎng)課
  • web網(wǎng)站開發(fā)實訓總結(jié)seo服務合同
  • wordpress本地搭建網(wǎng)站a開魯網(wǎng)站seo站長工具
  • 用div css做網(wǎng)站首頁網(wǎng)站優(yōu)化外包多少錢
  • wordpress播放網(wǎng)盤中山百度seo排名公司
  • 網(wǎng)創(chuàng)八步的第七步整站優(yōu)化報價
  • 北京市政建設集團有限責任公司網(wǎng)站站長友情鏈接平臺
  • 沭陽做網(wǎng)站shy1z百度百科推廣費用
  • 全國最大的網(wǎng)站建設公司以下屬于網(wǎng)站seo的內(nèi)容是
  • 我想做跑腿網(wǎng)站怎么做下列哪些店鋪適合交換友情鏈接
  • 邯鄲網(wǎng)站設計價格長春百度網(wǎng)站優(yōu)化
  • h5做網(wǎng)站b2b網(wǎng)站大全
  • 網(wǎng)絡組建與維護試題seo搜索引擎優(yōu)化報價
  • 惠州建站公司seo建站的步驟
  • 無刷新網(wǎng)站b站推廣網(wǎng)站入口202
  • b2c網(wǎng)站服務內(nèi)容國家提供的免費網(wǎng)課平臺
  • 心理測試用什么網(wǎng)站做上海最近3天疫情情況
  • 做網(wǎng)站做小時seo加盟
  • 有什么做3維的案例網(wǎng)站濟南網(wǎng)站seo