git进阶之--merge的5种策略

用了这么久的git,其中很长一段时间都是属于,瞎几把乱用。对于git merge这些东西用的也是只知道个大概。同事最近给我们安利了一发git merge的侧率,大开眼界,记录一发。

上网百度了一下git策略,在网上,大多数的git侧率都是只有3种的。这次我所要记录的,是5种策略。

常规合并里分为三种:

解决(Resolve)
递归(Recursive)
章鱼(Octopus)

非常规两种:

我们的(Ours)
子树(Subtree)

在看策略之前,我们先看看关于merge在做处理时候的参数
主要分为三种:

--ff  --ff--only  快速合并    只快速合并(如果有冲突就失败)
--no-ff   非快速合并
--squash  将合并过来的分支的所有不同的提交,当做一次提交,提交过来

--ff和--no-ff的区别是,当解决完冲突后,no-ff会生成一次commit
eg: Merge branch 'suit' into master

好的现在来详细的看一看各种策略

首先看一下最基本的
**解决(Resolve)**:
这种策略只能合并两个分支,首先定义某个次commit为祖先为合并基础,然后执行一个直接的三方合并

**递归(Recursive)**:
和解决很相似,说白了就是多次的调用解决。为什么会有这个策略呢?因为解决策略,是找到两个分支的某个commit为组向才来合并的,如果某一个分支上,某一次提交(祖先或者祖先以后的提交)是merge过的,这时候,就需要递归来解决了。

**章鱼(Octopus)**:
当需要多个分支的时候,就可以用octopus来解决,这就是来同时合并多个分支的策略。

再看看特殊的策略
**我们的(Ours)**:
这是一个很奇怪的策略,我感觉没啥用,不知道其用途是如何
它的作用是,将另外一个分支的commit记录(log)提交过来,但是不提交文件本身。

**子树(Subtree)**:
这种策略是在用于,当想将一个新的项目作为该项目的子项目往git上提交时可以使用,说白了就是将其当做一个子模块一般。
  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
`git branch --ff-only merge` 不是一个有效的 Git 命令。请注意,`--ff-only` 和 `merge` 是独立的选项和指令。 `git branch --ff-only` 是一个用于检查当前分支是否可以进行快进合并(fast-forward merge)的命令。快进合并是指将一个分支的提交历史直接应用到另一个分支上,而不会创建新的合并提交。如果使用 `git branch --ff-only` 检查当前分支时,结果为成功,则说明当前分支可以进行快进合并。 另一方面,`merge` 是一个用于将一个分支的更改合并到当前分支的命令。可以使用 `git merge <branch>` 来执行合并操作,其中 `<branch>` 是要合并的分支名称。 因此,如果你想将一个分支(例如 "merge" 分支)的更改合并到当前分支,并且只在快进合并可行时才进行合并,可以按照以下步骤操作: 1. 首先,确保你在要合并更改的目标分支上。你可以使用 `git checkout <target_branch>` 命令切换到目标分支。 2. 然后,运行 `git branch --ff-only` 命令来检查是否可以进行快进合并。 3. 如果 `git branch --ff-only` 命令返回成功,即当前分支可以进行快进合并,则运行 `git merge merge` 命令来将 "merge" 分支的更改合并到当前分支。 需要注意的是,合并操作可能会导致合并提交的生成,特别是当两个分支之间存在分叉点时。只有在可以进行快进合并的情况下,才会执行无合并提交的快进合并。否则,将创建一个新的合并提交来合并两个分支的更改。 总结起来,`git branch --ff-only` 是用于检查当前分支是否可以进行快进合并的命令,而 `git merge <branch>` 是用于将一个分支的更改合并到当前分支的命令。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值