介绍git cherry-pick <CommitHash>
的使用
先了解一下git cherry-pick <CommitHash>
命令
该命令用与合并某个分支的某一次提交,<CommitHash>替换为对应那次提交的哈希码(Hash)。
哈希码 : 哈希算法是一种将任意长度的输入数据转换成固定长度输出的方法,输出结果称为哈希码。可以起到压缩字符,加密信息,数据快速查找等作用。
- git中的Hash可以理解为每一次commit后自动生成的id,包含了提交者、提交时间、提交信息等。每次提交对应一个Hash,可以使用该Hash进行分支选择性合并。
- 注意 : 该命令与
git merge <branch>
命令不同,merge
命令是用于直接合并<branch>下的所有提交(commit)。
该命令可用于同步你Github上fork的仓库。即若这个仓库有多个人在同时开发,可以使用该命令,配合相关操作,有选择的把他人对该仓库的更改同步到你的本地上。
- 在github上fork某个仓库相当于将该仓库(upstream)的项目复制到自己仓库中。但并不会同步更新上游仓库的变动。
具体操作如下:
-
先将上游仓库关联到本地Git,使用命令(第一次进行时)
git remote add upstream <URL> <URL> 为对应上游仓库(你fork的原仓库)的SSH链接,好像Http也可以 origin对应原仓库,upstream对应上游仓库
-
使用命令
git pull upstream <branch> <branch> 对应你要同步的上游仓库的某一分支。
使用该命令可以同步上游仓库的某个特定分支,拉取到本地。
-
使用命令
git cherry-pick <CommitHash>
合并某个分支的特定Commit。注意,使用上面命令是将指定的提交commitHash,应用于当前分支。
即,若你想将dev分支下的某个Commit合并到master分支下,得先切换到master分支下,再调用该命令。 -
使用上述命令需要先知道CommitHash,可使用以下命令查看
git log origin/<branch> ----- 查看自己本地的改动CommitHash 使用 git log origin/<branch> -3 可以限制输出行数 使用 git log origin/<branch> --oneline 可以输出简洁版的信息,包含Hash和提交注释 git log upstream/<branch> ----- 查看上游仓库对应<branch>的改动CommitHash。(前提是已经添加了upstream,详见1) 其他细节同上。
参考文章
- https://deepinout.com/git/git-questions/1245_git_how_to_cherrypick_from_a_remote_branch.html
- https://blog.csdn.net/love666666shen/article/details/120692804
- https://blog.csdn.net/zhezhebie/article/details/78761417
- fetch和pull的区别:https://blog.csdn.net/qq_37420939/article/details/89736567
- 等