包阅导读总结
1. 关键词:Git、分支切换、stash 命令、cherry-pick 命令、问题解决
2. 总结:本文主要介绍了 Git 在日常工作中的两种情况及解决办法,包括无法切换分支时使用 git stash 命令临时存储更改,以及合并分支错误时使用 git cherry-pick 命令选择性合并提交。
3. 主要内容:
– Git 日常工作中的问题
– 开发新需求时需切换分支,但 Git 不允许未提交变更时切换。
– 公共合并分支可能被错误合并,导致代码污染。
– 问题一的解决办法
– git stash 命令可临时存储未提交更改。
– 常用命令如 git stash save、git stash list 等。
– 新增文件处理及对远程仓库无影响。
– 问题二的解决办法
– git cherry-pick 命令可选择性将提交合并到其他分支。
– 常用命令及附加选项的用法。
思维导图:
文章地址:https://mp.weixin.qq.com/s/c4CZIlTeYbwx9Pl9cqTFfQ
文章来源:mp.weixin.qq.com
作者:逆yan_
发布时间:2024/9/3 8:01
语言:中文
总字数:1383字
预计阅读时间:6分钟
评分:86分
标签:Git,版本控制,开发工具,代码管理,技术技巧
以下为原文内容
本内容来源于用户推荐转载,旨在分享知识与观点,如有侵权请联系删除 联系邮箱 media@ilingban.com
点击关注公众号,“技术干货”及时达!
前言
在日常工作中,大家是不是遇到过这几种情况
-
在开发新的需求的时候,紧急让你去修改项目中某个问题,这就需要从自己的开发分支切到新的分支,那么这个时候,git是不允许你提交的,你必须将变更提交到版本库才可以切换分支。 -
一般我们的Git工作流是,一个需求一个开发分支,但是一个项目中的某个环境(生产除外)都会有一个公共的合并分支,既然是公共的合并分支,那肯定是多个人需要把自己的代码合并到公共分支后,在发布到环境上。那这样可能会存在一个问题,就是开发人员在合并分支的时候,不小心将自己的开发分支,合了公共开发分支,这样的话,你的代码中可能会存在其他需求的代码,那么在code review的时候就会出问题,因为别人的需求,可能不会跟你的需求一起上线,如果是刚开始合并完,及时发现还可以补救。
今天来给大家介绍一下以上两种情况的解决办法
问题一解决办法
git stash
命令能够将当前工作目录中尚未提交的所有更改(包括暂存区和未暂存的修改)临时存储到stash堆栈中,从而让用户在不影响当前工作进度的前提下,轻松切换到其他分支处理问题、合并代码或恢复到干净的工作状态。
常用命令
命令 | 说明 |
---|---|
git stash | 保存工作区内变更 |
git stash list | 查看当前git中存储的状态 |
git stash save ‘message’ | 保存当前工作区状态,并添加一个信息 |
git stash pop | 读取最近,并将工作区恢复到这个存储状态,并删除 |
git stash apply [stashName] | 读取某个存储记录,并将工作区恢复到这个存储状态,并删除 |
栗子🌰
可以看到当前工作区内修改了这个文件,当我切换分支的时候是切换不过去的,但git已经给了提示,提交你的更改或者使用stash

运行git statsh save 'message'
命令
查看stash,安装vscode扩展Gitlen,可以看到此时我们刚刚保存的一条stash已经成功了,这个时候我们可以随意切换分支,合并等操作。

应用当前存储状态



可以看到工作区又恢复成,我们存储前的样子。
新增的文件(未跟踪)会不会被存储?会不会影响运程仓库?
-
新增的文件不会被存储,但我们可以先执行 git add
命令后,再去执行git stash
,这个时候新增的文件也会被存储起来。或者运行git stash -u
命令,添加-u
选项后,会存储git未跟踪的文件。 -
git stash命令纯是在自己本地操作,完全不用担心,会影响远程仓库,比如我在运行 git stash pop
恢复工作区状态后,还可以继续运行git commit -m
git push
git pull
等一系列命令
以上是git stash
的用法,当然也有一些高级的用法,比如一些附加选项,一些其他的命令以及它的原理,感兴趣的同学可以自行去了解一下,大家一起共勉…
问题二解决办法
前面已经提到,如果在你合并了公共开发分支后,及时回滚是没有问题的,下面我们主要看,在没有及时发现的情况下的补救办法。
git cherry-pick commit_id
命令,从一个分支选择性的将commit合并到另一个分支上。
常用命令
命令 | 说明 |
---|---|
git cherry-pick <commit_id> | 转移某个提交 |
git cherry-pick <commit_id>..<commit_id> | 转移m-n提交,不包含头尾 |
git cherry-pick <commit_id>^..<commit_id> | 转移m-n提交,包含头尾,^ 表示包含 |
git cherry-pick <commit_id> <commit_id> | 分散的情况下,可以选择转移多个提交 |
附加选项
-
--continue
主要用于解决冲突后,继续转移操作
以上是git cherry-pick
的用法,主要还是用于选择性的将commit转移到新的分支上,对于开发分支被污染有很大的作用。
最后
今天的分享就到这里了。希望能够帮助各位。如有不正确的地方,欢迎大家指正。😘
