從 Git 的另一個分支複製提交

Abdul Jabbar 2022年4月22日
從 Git 的另一個分支複製提交

在 Git 中工作時,我們希望將來自一個分支的特定單個提交整合到我們當前的 HEAD 分支。這可能是因為客戶希望對產品進行一些更改或任何已報告的錯誤。

要麼我們錯誤地提交了它,要麼我們不想在我們之前的分支中再提交它,而是希望它在我們當前的 HEAD 分支中。

上述問題的答案是 CHERRY PICK。因此,在接下來的部分中,我們將詳細討論 cherry-pick 命令。

從 Git 的另一個分支複製提交

從一個分支中提取一個特定的提交併將其複製到我們當前的 HEAD 分支中稱為 Cherry Picking。

為此,Git 有一個特定的命令,即 Git 的 cherry-pick 命令。挑選櫻桃的另一個用途是在我們合併或開發拉取請求之前應用特定的更改。

這對於撤消更改非常有用。

本文將討論從一個分支中挑選一個特定的提交到另一個分支。

使用 git log 命令檢視提交

首先,我們將使用 git log 來調查我們想要選擇的提交。以下是 git log 命令的分支結果:

d23216 - 953222	- 953219 - aa3s36 - 532d37 [master]
           \
            76cada - 66ecb3	- b886a0 [feature]

feature 分支中,有一個來自另一個分支的提交 66ecb3,我們只希望在我們的 master 分支中。

讓我們挑選那個特定的提交併將其轉移到當前分支,即 master 分支。然後,我們可以在未來為我們的專案使用該提交更改。

執行 git cherry-pick 命令複製提交

在這裡,git cherry-pick 將幫助我們。66ecb3 是櫻桃,我們想從過去已經完成的大量推送中挑選它。

讓我們通過執行以下命令從另一個分支中選擇它。

git checkout master
git cherry-pick 66ecb3

一旦上面列出的命令成功執行,現在,66ecb3 將作為我們主分支中的新提交。

因此,Git 複製了我們需要的提交,在 master 分支上包含相同的提交訊息和更改。最終,建立了一個帶有新 ID 的新提交。

使用 git reset 命令清理其他分支

如果我們切換到 feature 分支,我們將在其舊位置看到相同的提交。這是因為 Git 已將其複製到另一個分支而不是移動它。

它沒有觸動原來的分支。

現在,為了清理和撤消,我們將在簽出所需的分支後使用命令 git reset

$ git checkout Test
Switched to branch 'Test'
$ git reset --hard HEAD~1
HEAD is now at 66ecb3 Change the title and delete the error page
Author: Abdul Jabbar
Abdul Jabbar avatar Abdul Jabbar avatar

Abdul is a software engineer with an architect background and a passion for full-stack web development with eight years of professional experience in analysis, design, development, implementation, performance tuning, and implementation of business applications.

LinkedIn

相關文章 - Git Commit