真香:git merge 与 git cherry-pick 命令

前言

来啦老铁!

今天咱们简单学2个 git 命令,这2个命令是我以前几乎没用过的,近期用得比较频繁,而且觉得很香的命令,他们就是:

  • git merge 命令;
  • git cherry-pick 命令;

1. git merge 命令;

  • 背景;

笔者比较菜,以往合并分支都是在 git 远程仓库上发起 pull request,然后在远程仓库进行 merge的,这样有一个坏处是远程仓库上会多出很多这方面的 pull request 记录;

  • 认识 git merge 命令;

经过一些查阅,发现了 git merge 命令,可以很好的解决这个问题,我们以 master 分支 merge 到 feature/dylan_test 分支为例,命令如下:

# 同步分支信息
git checkout master
git pull
git checkout feature/dylan_test
git pull
# 合并master分支到当前分支
git merge master
# 将合并分支产生的结果推送到远程仓库
git push

git merge 命令还可以带上信息,如:

git merge -m "fix: 同步master分支信息" master

这样就不需要在远程仓库操作,也不会多出 pull request 操作了,一个字,真香啊~

2. git cherry-pick 命令;

  • 背景;

笔者同样比较菜,在遇到一个分支上有多个 commit,但由于某些原因,想把该分支的部分 commit 先提交,merge 到 master 分支,在过往,这种工作通常是重复做的,十分浪费时间,而且很容易改错改漏,经过同事的指点,发现了 git cherry-pick 这个真香命令;

  • 认识 git cherry-pick 命令;

假设我们有2个分支,分别为:feature/dylan_test_a 和 feature/dylan_test_b,feature/dylan_test_a 上有多个 commit ,其中有2个 commit,其 commit sha 分别为 xxxxx 和 yyyyy 希望先通过 feature/dylan_test_b 分支 merge 到 master 分支,那么命令如下:

# 切换到要增加新 commit 的分支;
git checkout feature/dylan_test_b
# 复制指定的 commit xxxxx 到当前分支;
git cherry-pick xxxxx
# 复制指定的 commit yyyyy 到当前分支;
git cherry-pick yyyyy
# 推送 feature/dylan_test_b 分支的新改动 xxxxx 和 yyyyy 包含的改动到远程分支;
git push
  • 复制多个 commit 还可以这么做:
  1. 复制xxxxx、yyyyy、zzzzz 这三个 commit;
git cherry-pick xxxxx yyyyy zzzzz
# 注意:commit 间是一个空格;
  1. 复制xxxxx、zzzzz 居于 xxxxx 和 zzzzz commit 的所有 commit;
git cherry-pick xxxxx..zzzzz
# 注意:中间有2个点;

等同于:

git cherry-pick xxxxx^…zzzzz
# 注意:中间有 ^ 加3个点;
  1. 复制居于 xxxxx 和 zzzzz commit 的所有 commit,但不包含 xxxxx:
git cherry-pick (xxxxx..zzzzz]
# 注意:区间开闭

发现没有,这样就能很轻松的将 commit 复制到另外一个分支了,不用人工再修改一遍,确实香啊~

当然 git 还有很多其他很有用的命令,咱们未来探索了再记录分享哈,今天就到这啦~

如果本文对您有帮助,麻烦动动手指点点赞?

谢谢!

你可能感兴趣的:(真香:git merge 与 git cherry-pick 命令)