git cherry-pick命令

本文介绍如何使用git cherry-pick命令将指定分支的提交合并到当前分支,包括创建分支、提交更改、推送分支及最终应用cherry-pick的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

          git cherry-pick 可以合入某个分支的commit,开发功能需要新建一个分支,开发完毕之后要将新键分支修改code合到主分支上去就需要用到这个命令。

当下git内容

lj@lj-virtual-machine:~/111111/git/gittest$ git branch
* master
lj@lj-virtual-machine:~/111111/git/gittest$ ls
test.sh
lj@lj-virtual-machine:~/111111/git/gittest$ cat test.sh 
11
lj@lj-virtual-machine:~/111111/git/gittest$ 

新建一个分支test,查看该分支,内容和master分支上内容一样

lj@lj-virtual-machine:~/111111/git/gittest$ git checkout -b test
切换到一个新分支 'test'
lj@lj-virtual-machine:~/111111/git/gittest$ git branch
  master
* test
lj@lj-virtual-machine:~/111111/git/gittest$ cat test.sh 
11
lj@lj-virtual-machine:~/111111/git/gittest$

增加test.sh内容(22),切换分支,这时候不能切换分支,因为你的代码boss还没有审核,所以你要先把你的修改commit并push到远端。

lj@lj-virtual-machine:~/111111/git/gittest$ git status
位于分支 test
尚未暂存以备提交的变更:
  (使用 "git add <文件>..." 更新要提交的内容)
  (使用 "git checkout -- <文件>..." 丢弃工作区的改动)

	修改:         test.sh

修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
lj@lj-virtual-machine:~/111111/git/gittest$ git add test.sh 
lj@lj-virtual-machine:~/111111/git/gittest$ git commit
[test 5e78967] test
 1 file changed, 1 insertion(+)
lj@lj-virtual-machine:~/111111/git/gittest$ git log
commit 5e78967005660b5debe810b4435a5d638c6a757d
Author: yaori <test@runoob.com>
Date:   Thu Mar 28 20:46:43 2019 +0800

    test

commit bfbbb585de8626fecfc4cd2afecf414f04637af2
Author: yaori <test@runoob.com>
Date:   Thu Mar 28 20:30:40 2019 +0800

    :wq

commit 0d4a4182f4ca18e14919727bbedffccc4f187ac7
Author: yaori <test@runoob.com>
Date:   Thu Mar 28 19:25:03 2019 +0800

    1

commit 6aadf6389b03a29123a72f26071ff57b514e4467
Author: yaori <test@runoob.com>
Date:   Thu Mar 28 09:26:05 2019 +0800

    test branch cherry-pick

commit 415428a4be7cc41a1d91381fe6b0dbe88b471cd0
Author: yaori <test@runoob.com>
lj@lj-virtual-machine:~/111111/git/gittest$ git push origin test
Counting objects: 6, done.
Compressing objects: 100% (1/1), done.
Writing objects: 100% (3/3), 233 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To http://git.iservernetwork.com/iserver/gittest.git
 * [new branch]      test -> test
lj@lj-virtual-machine:~/111111/git/gittest$ 

这次的commit id是5e78967005660b5debe810b4435a5d638c6a757d

git show commit id查看修改了啥

lj@lj-virtual-machine:~/111111/git/gittest$ git show 5e78967005660b5debe810b4435a5d638c6a757d
commit 5e78967005660b5debe810b4435a5d638c6a757d
Author: yaori <test@runoob.com>
Date:   Thu Mar 28 20:46:43 2019 +0800

    test

diff --git a/test.sh b/test.sh
index b4de394..bfc04a9 100644
--- a/test.sh
+++ b/test.sh
@@ -1 +1,2 @@
 11
+22
lj@lj-virtual-machine:~/111111/git/gittest$ 

在主分支下面git cherry-pick commit id(test分支)

lj@lj-virtual-machine:~/111111/git/gittest$ git cherry-pick 5e78967005660b5debe810b4435a5d638c6a757d
位于分支 master
您的分支领先 'origin/master' 共 1 个提交。
  (使用 "git push" 来发布您的本地提交)

您在执行拣选提交 5e78967 的操作。

无文件要提交,干净的工作区
之前的拣选操作现在是一个空提交,可能是由冲突解决导致的。如果您无论如何
也要提交,使用命令:

    git commit --allow-empty

否则,请使用命令 'git reset'

然后在push一次,test分支里面的修改就push到远程master分支了

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

盼盼编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值