git合并方法学习

用字符画描述git的合并方法 1. 合并(Merge) main 分支 A---B---C \ dev 分支 D---E---F 在 main 分支上执行 `git merge dev` 后: main 分支 A---B---C-----------G <- (G 是合并提交) \ / dev 分支 D---E---F 2. 变基(Rebase) main 分支 A---B---C \ dev 分支 D---E---F 在 dev 分支上执行 `git rebase main` 后,再在 main 分支上执行 `git merge dev`: main 分支 A---B---C---D'---E'---F' 3. 压缩合并(Squash and Merge) main 分支 A---B---C \ dev 分支 D---E---F 在 main 分支上执行 `git merge --squash dev` 后,再执行提交: main 分支 A---B---C-----------G' <- (G' 是一个新的提交,合并来自 D、E 和 F 的变更) 4. 拣选提交(Cherry-pick)(不是标准合并所有更改的方法) main 分支 A---B---C \ dev 分支 D---E---F 在 main 分支上对 dev 分支的每个提交执行 `git cherry-pick <提交哈希值>`: main 分支 A---B---C---D'---E'---F' <- (每个提交被逐一复制) 合并方法的对比表格 方法 特点 适用场景 结果 Merge 保留所有分支的历史 标准的合并操作,适用于大多数场景 创建一个新的合并提交 Rebase 使历史线性化 个人分支上的工作或清洁历史 不保留原始分支提交的顺序 Squash and Merge 将所有更改压缩为一个提交 当你想要简化复杂分支的历史时 一个新的单一提交 Cherry-pick 手动选择特定提交 只合并某些特定的更改 对选择的每个提交创建新的提交 请注意,这些方法中,Merge 和 Rebase 是最常用的策略来整合一个开发分支(如 dev)到主分支(如 main)。Squash and Merge 通常用于在合并之前压缩多个提交以保持清洁的历史。Cherry-pick 方法并不是一个真正的分支合并策略,它只是用于将选定的提交从一个分支复制到另一个分支,因此它不应用于将一个完整的功能分支合并到主分支的场景。

创建: 2024-03-26 | 字数: 599字 | 时长: 2分钟

Shell 脚本加密的一些思考

今天同事请教我一个问题,说不想让别人看到脚本执行的内容,我一开始脸懵,后来才了解到,她是不想让用户看到脚本的内容(卸载软件的路径),以防软件的文件被人恶意破坏,导致不能正常运行等问题,于是便有的本文。 ...

创建: 2022-11-02 | 字数: 535字 | 时长: 2分钟

Shell 学习之 getopt 和 getopts

getopt 与 getopts 都是 Bash 中用来获取与分析命令行参数的工具,常用在 Shell 脚本中被用来分析脚本参数。 getopts 是 Shell 内建命令,getopt 是一个独立外部工具 getopts 使用语法简单,getopt 使用语法较复杂 getopts 不支持长参数(如:--option),getopt 支持长参数 getopts 出现的目的是为了在不太复杂的场景代替 getopt 较快捷地执行参数分析工作 getopts 负责参数解析,可以方便地提取参数值,getopt 只负责按规则重新对参数进行排列,进一步解析需要自行编写代码处理 ...

创建: 2022-09-11 | 字数: 2383字 | 时长: 5分钟