前言
来啦老铁!
今天咱们简单学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 还可以这么做:
- 复制xxxxx、yyyyy、zzzzz 这三个 commit;
git cherry-pick xxxxx yyyyy zzzzz
# 注意:commit 间是一个空格;
- 复制xxxxx、zzzzz 居于 xxxxx 和 zzzzz commit 的所有 commit;
git cherry-pick xxxxx..zzzzz
# 注意:中间有2个点;
等同于:
git cherry-pick xxxxx^…zzzzz
# 注意:中间有 ^ 加3个点;
- 复制居于 xxxxx 和 zzzzz commit 的所有 commit,但不包含 xxxxx:
git cherry-pick (xxxxx..zzzzz]
# 注意:区间开闭
发现没有,这样就能很轻松的将 commit 复制到另外一个分支了,不用人工再修改一遍,确实香啊~
当然 git 还有很多其他很有用的命令,咱们未来探索了再记录分享哈,今天就到这啦~
如果本文对您有帮助,麻烦动动手指点点赞?
谢谢!
网友评论