git的一些使用高级技巧

使用git stash

new分支上开发到一半,要去修改old分支上的bug
在new分支上的时候在命令行输入:
git stash


image.png

或者
git stash save “修改的信息"
这样以后你的代码就回到自己上一个commit了,直接git stash的话git stash的栈会直接给你一个hash值作为版本的说明,如果用git stash save “修改的信息”,git stash的栈会把你填写的“修改的信息”作为版本的说明。
接下来你回到old分支修改代码完成,你又再回到new分支,输入:
git stash pop
或者


image.png

git stash list
git stash apply stash@{0}
就可以回到保存的版本了。git stash pop的作用是将git stash栈中最后一个版本取出来,git stash apply stash@{0}的作用是可以指定栈中的一个版本,通过git stash list可以看到所有的版本信息:
stash@{0}: On order-master-bugfix: 22222
stash@{1}: On order-master-bugfix: 22222
然后你可以选择一个你需要的版本执行:
git stash apply stash@{0}
这时候你搁置的代码就回来了。

git 从a分支上提取某几次提交合并到b分支上的方法 cherry-pick

cherry-pick可以选择某一个分支中的一个或几个commit(s)来进行操作。例如,假设我们有个稳定版本的分支A,另外还有个开发版本的分支B,我们不能直接把两个分支合并,这样会导致稳定版本混乱,但是又想增加一个 A 中的功能到 B 中,就可以使用cherry-pick

查找提交的commitID

首先我们在 A 分支中找到要合并的commitId,通过git log命令查看历史提交记录并复制commitId

$ git log
commit a86fa61c13df652c0dd9c00d2135c43b575c258a
Author: injurys
Date:   Thu May 7 16:27:15 2020 +0800

    4

commit 98fdf8d5a0fec98acafde1ed9e3d29a11f3b145d
Author: injurys
Date:   Thu May 7 16:26:29 2020 +0800

    3

commit 8d01919da93393930839a64a86033440b3e648b4
Author: injurys
Date:   Thu May 7 16:26:10 2020 +0800

    2
切换分支并合并

切换到B分支上,使用git cherry-pick命令合并

$ git checkout b
Switched to branch 'b'
$ git cherry-pick 8d01919da9339393
[q1 8d33915] 2
 Date: Thu May 7 16:26:10 2020 +0800
 1 file changed, 1 insertion(+)

这样就把 A 分支的提交记录合并到了 B 分支上

总结
git cherry-pick id>:单独合并一个提交
git cherry-pick -x id>:同上,不同点:保留原提交者信息。

通过 git cherry-pick 命令来合并某次提交是不是很简单
另外,不单单可以合并一次记录,可以通过commitId的范围记录进行范围合并。

git cherry-pick id>..<end-commit-id>
git cherry-pick id>^..<end-commit-id>

前者表示把到之间(左开右闭,不包含start-commit-id)的提交cherry-pick到当前分支; 后者有”^”标志的表示把到之间(闭区间,包含start-commit-id)的提交cherry-pick到当前分支。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容