亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

為什么使用Git的cherry-pick命令

發布時間:2021-12-30 16:47:39 來源:億速云 閱讀:136 作者:小新 欄目:互聯網科技

這篇文章主要為大家展示了“為什么使用Git的cherry-pick命令”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“為什么使用Git的cherry-pick命令”這篇文章吧。

避免重復性工作

如果你可以直接將相同的提交復制到另一個分支,就沒有必要在不同的分支中重做相同的變更。請注意,遴選出來的提交會在另一個分支中創建帶有新哈希的新提交,所以如果你看到不同的提交哈希,請不要感到困惑。

如果您想知道什么是提交的哈希,以及它是如何生成的,這里有一個說明可以幫助你。提交哈希是用 SHA-1 算法生成的字符串。SHA-1  算法接收一個輸入,然后輸出一個唯一的 40 個字符的哈希值。如果你使用的是 POSIX 系統,請嘗試在您的終端上運行這個命令:

$ echo -n "commit" | openssl sha1

這將輸出一個唯一的 40 個字符的哈希值 4015b57a143aec5156fd1444a017a32137a3fd0f。這個哈希代表了字符串  commit。

Git 在提交時生成的 SHA-1 哈希值不僅僅代表一個字符串。它代表的是:

sha1(     meta data         commit message         committer         commit date         author         authoring date     Hash of the entire tree object )

這就解釋了為什么你對代碼所做的任何細微改動都會得到一個獨特的提交哈希值。哪怕是一個微小的改動都會被發現。這是因為 Git 具有完整性。

撤銷/恢復丟失的更改

當你想恢復到工作版本時,遴選就很方便。當多個開發人員在同一個代碼庫上工作時,很可能會丟失更改,最新的版本會被轉移到一個陳舊的或非工作版本上。這時,遴選提交到工作版本就可以成為救星。

它是如何工作的?

假設有兩個分支:feature1 和 feature2,你想把 feature1 中的提交應用到 feature2。

在 feature1 分支上,運行 git log 命令,復制你想遴選的提交哈希值。你可以看到一系列類似于下面代碼示例的提交。commit  后面的字母數字代碼就是你需要復制的提交哈希。為了方便起見,您可以選擇復制前六個字符(本例中為 966cf3)。

commit 966cf3d08b09a2da3f2f58c0818baa37184c9778 (HEAD -> master) Author: manaswinidas <me@example.com> Date:   Mon Mar 8 09:20:21 2021 +1300    add instructions

然后切換到 feature2 分支,在剛剛從日志中得到的哈希值上運行 git cherry-pick:

$ git checkout feature2 $ git cherry-pick 966cf3.

如果該分支不存在,使用 git checkout -b feature2 來創建它。

這里有一個問題。你可能會遇到下面這種情況:

$ git cherry-pick 966cf3 On branch feature2 You are currently cherry-picking commit 966cf3d. nothing to commit, working tree clean The previous cherry-pick is now empty, possibly due to conflict resolution. If you wish to commit it anyway, use:    git commit --allow-empty Otherwise, please use 'git reset'

不要驚慌。只要按照建議運行 git commit --allow-empty:

$ git commit --allow-empty [feature2 afb6fcb] add instructions Date: Mon Mar 8 09:20:21 2021 +1300

這將打開你的默認編輯器,允許你編輯提交信息。如果你沒有什么要補充的,可以保存現有的信息。

就這樣,你完成了你的第一次遴選。如上所述,如果你在分支 feature2 上運行 git log,你會看到一個不同的提交哈希。下面是一個例子:

commit afb6fcb87083c8f41089cad58deb97a5380cb2c2 (HEAD -&gt; feature2) Author: manaswinidas &lt;[me@example.com][4]&gt; Date:   Mon Mar 8 09:20:21 2021 +1300    add instructions

不要對不同的提交哈希感到困惑。這只是區分 feature1 和 feature2 的提交。

遴選多個提交

但如果你想遴選多個提交的內容呢?你可以使用:

git cherry-pick <commit-hash2> <commit-hash3>... <commit-hashn>

請注意,你不必使用整個提交的哈希值,你可以使用前五到六個字符。

同樣,這也是很繁瑣的。如果你想遴選的提交是一系列的連續提交呢?這種方法太費勁了。別擔心,有一個更簡單的方法。

假設你有兩個分支:

  • feature1 包括你想復制的提交(從更早的 commitA 到 commitB)。

  • feature2 是你想把提交從 feature1 轉移到的分支。

然后:

  • 輸入 git checkout

  • 獲取 commitA 和 commitB 的哈希值。

  • 輸入 git checkout

  • 輸入 git cherry-pick

    ^..(請注意,這包括 commitA 和 commitB)。
  • 如果遇到合并沖突,像往常一樣解決,然后輸入 git cherry-pick --continue 恢復遴選過程。

重要的遴選選項

以下是 Git 文檔 中的一些有用的選項,你可以在 cherry-pick 命令中使用。

  • -e、--edit:用這個選項,git cherry-pick 可以讓你在提交前編輯提交信息。

  • -s、--signoff:在提交信息的結尾添加 Signed-off by 行。更多信息請參見 git-commit(1) 中的 signoff  選項。

  • -S[

    ]、--pgg-sign[=]:這些是 GPG 簽名的提交。keyid  參數是可選的,默認為提交者身份;如果指定了,則必須嵌在選項中,不加空格。
  • --ff:如果當前 HEAD 與遴選的提交的父級提交相同,則會對該提交進行快進操作。

下面是除了 --continue 外的一些其他的后繼操作子命令:

  • --quit:你可以忘記當前正在進行的操作。這可以用來清除遴選或撤銷失敗后的后繼操作狀態。

  • --abort:取消操作并返回到操作序列前狀態。

下面是一些關于遴選的例子:

  • git cherry-pick master:應用 master 分支頂端的提交所引入的變更,并創建一個包含該變更的新提交。

  • git cherry-pick master~4 master~2':應用master`  指向的第五個和第三個最新提交所帶來的變化,并根據這些變化創建兩個新的提交。

感到不知所措?你不需要記住所有的命令。你可以隨時在你的終端輸入 git cherry-pick --help 查看更多選項或幫助。

以上是“為什么使用Git的cherry-pick命令”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

临潭县| 庄浪县| 绩溪县| 湖州市| 嘉黎县| 仲巴县| 栾川县| 威海市| 沧源| 浦县| 万全县| 来宾市| 澎湖县| 永泰县| 北碚区| 东乌珠穆沁旗| 常山县| 加查县| 武清区| 苍南县| 镇雄县| 宕昌县| 梁河县| 米脂县| 民乐县| 科技| 江华| 榆林市| 全州县| 石狮市| 繁昌县| 阿合奇县| 新闻| 思南县| 通州市| 赤峰市| 乐至县| 上犹县| 日土县| 明水县| 邵东县|