从 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
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