git merge详解
git merge 命令用于合并两个分支的更改。以下是 git merge 命令的一些常用参数:
- git merge <分支名>: 将指定分支的更改合并到当前分支。
git merge feature-branch - git merge --no-ff <分支名>:这个选项确保总是创建一个新的合并提交,即使合并可以通过快进方式完成。快进合并发生在合并的目标分支领先于被合并的分支时。–no-ff 选项强制创建一个新的提交,保留被合并分支的上下文。
git merge --no-ff feature-branch - git merge --ff-only <分支名>: 这个选项强制进行快进合并,即只有在可以不创建新提交的情况下才会允许合并。如果快进合并不可行(例如,两个分支都有更改),它将拒绝合并。
git merge --ff-only feature-branch - git merge --abort: 这个选项允许你放弃有冲突的合并,将你的工作目录和暂存区恢复到合并之前的状态。
git merge --abort - git merge --squash <分支名>: --squash 选项将指定分支的更改压缩成一个新的提交,而不执行实际的合并。这个选项常用于将一个分支的更改整理成一个简洁的提交,以便更清晰地记录历史。
git merge --squash feature-branch - git merge --strategy=<策略> <分支名>: 指定合并策略,例如 ours 或 theirs。
git merge --strategy=ours feature-branch - git merge --no-commit <分支名>: 执行合并但不自动提交,允许进行额外的修改。
git merge --no-commit feature-branch - git merge --continue: 在完成手动解决冲突后,继续之前被取消的合并。
git merge --continue - git merge --edit: 合并提交时编辑合并信息。
git merge --edit - git merge --verify-signatures: 检查合并提交的签名。
git merge --verify-signatures feature-branch
–no–ff 模式其实就是相当于master指针new了一个跟dev指针一样的空间并且放了相同的内容然后指向这个空间。而原来的快速模式,就是简单将master指针指向dev指针指向的内容而已,并没有自己创造空间。
总的来说就是开发的时候巧用merge,当存在ff情况的时候而希望保存合并的痕迹,就使用–no–ff。
**
省略–no-ff 的好办法
**
以下命令输入后,即可省略 --no-ff 字段 ,第一个是针对master分支,以此类推
第二个是针对当前版本库的所有分支
第三个是针对所有版本库的所有分支
git config branch.master.mergeoptions “–no-ff” 仅针对当前分支有效
git config --add merge.ff false 仅针对当前版本库的所有分支有效
git config --global --add merge.ff false 仅针对所有版本库的所有分支有效