从 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