Bootstrap

Git命令: add、cherry pick

一 简述

最近,在公司的某项学习任务考核中,涉及从0开始编辑一个项目,以及git相关操作。这里遇到了git add -u 和 cherry pick等命令。本篇将介绍相关的几个命令,加深对git命令的理解。

二 git add

在日常开发中,最常用的就是git add file,git add ., git add -A几个命令,用于提交文件到数据暂存区。

2.1 git add -u

git add -u <==> git add –update

提交所有被删除和修改的文件到数据暂存区

2.2 git add .

git add .提交所有修改的和新建的数据暂存区

2.3 git add -A

git add -A <==>git add –all

提交所有被删除、被替换、被修改和新增的文件到数据暂存区

三 cherry pick

3.1 使用场景

对于多分支的代码库,将代码从一个分支转移到另一个分支是一种比较常见的需求。这时分两种情况。一种情况是,需要另一个分支的所有代码变动,那么就采用合并()。另一种情况是,我们只需要部分代码变动(某几个提交),这时可以采用 Cherry pick。

3.2 使用方式

命令的作用,就是将指定的提交(commit)应用于其他分支。

git cherry-pick 

其中,commitHash是我们提交代码到git时对应的hash值。例如下面是我在本地通过git log查看的,下面的commit ff445062b1424c40bae6b7eb0e639203491031a6, ff445062b1424c40bae6b7eb0e639203491031a6就是commitHash。

commit ff445062b1424c40bae6b7eb0e639203491031a6
Author: xxx 
Date:   Mon Mar 8 18:56:19 2021 +0800

    增加demo应用的k8s编排示例文件

commit 363bebdd49cd4f7f3799857d4af51fc256145593
Author: xxx 
Date:   Mon Mar 8 17:33:56 2021 +0800

cherry-pick类似于一个定制化的merge,它可以把其它分支上的commit一个个摘下来,合并到当前分支。

当有多个commit要合并到master分支时应该怎样操作呢?一个个的执行显然不合适。所幸的是,git提供了一个区间操作方法。命令如下:

git cherry-pick commit1..commit10

但有一点需要注意,这是一个左开右闭的操作,也就是说,commit1不会被合并到master分支,而commit10会合并到master中。