标签: fast-forward

`git merge`和`git merge --no-ff`有什么区别?

使用gitk log,我无法发现两者之间的差异.如何观察差异(使用git命令或某些工具)?

git merge fast-forward

878
推荐指数
7
解决办法
42万
查看次数

为什么git默认执行快进合并?

来自mercurial,我使用分支来组织功能.当然,我也想在我的历史中看到这种工作流程.

我使用git开始了我的新项目并完成了我的第一个功能.合并该功能时,我意识到git使用快进,即如果可能,它会将我的更改直接应用到主分支并忘记我的分支.

因此,思考未来:我是唯一一个从事这个项目的人.如果我使用git的默认方法(快进合并),我的历史将导致一个巨大的主分支.没有人知道我为每个功能使用了一个单独的分支,因为最后我只有那个巨大的主分支.这看起来不专业吗?

通过这种推理,我不想要快进合并,也不知道为什么它是默认的.这有什么好处的?

git git-merge fast-forward git-branch

637
推荐指数
2
解决办法
15万
查看次数

我可以默认在git中关闭快进吗?

我真的不能没有想过的时候,我会用git merge,而不是git rebase希望有一个承诺现身.有没有办法配置git默认快速关闭?事实上,有一个--ff选项似乎意味着有一种方法,但我似乎无法在文档中找到它.

git merge branch rebase fast-forward

257
推荐指数
3
解决办法
7万
查看次数

何时在Git中使用'--no-ff'合并选项

一个成功的Git分支模型建议--no-ff在合并分支时使用:

--no-ff标志使合并始终创建新的提交对象,即使可以使用快进执行合并.这样可以避免丢失有关功能分支历史存在的信息,并将所有一起添加功能的提交组合在一起.[...]

是的,它会创建一些(空的)提交对象,但增益要大得多.不幸的是,我还没有找到一种方法来制作--no-ffgit merge的默认行为,但它确实应该如此.

但是,了解Git工作流建议不要使用--no-ff:

因此,您添加了一条新规则:"当您在功能分支中合并时,使用 –-no-ff强制执行新提交."这可以完成工作,然后继续.[...]

--no-ff创可贴,破碎bisect,和blame奥秘是你使用螺丝刀作为锤子症状.[...]

这两种方法对于差异情景似乎都是合理的,但是什么被认为是"良好实践?"

你什么时候使用--no-ff,什么时候不用,为什么?

git git-merge fast-forward

61
推荐指数
2
解决办法
3万
查看次数

`--squash`和`--no-ff --no-commit`之间有什么区别?

应该使用哪一个来隐藏微观发现?

git merge --squashgit merge --no-ff --no-commit否认其他父母的唯一区别?

git merge git-merge squash fast-forward

60
推荐指数
1
解决办法
2万
查看次数

Git:阻止master分支中的提交

(为简单起见)我有一个master分支和一个dev在我的Git-repo中.我想确保master分支始终正常工作,因此我所做的所有工作都应该在dev分支机构中.

但是,当我将合并中的更改--no-ff合并时,我倾向于留在master分支中,并继续在其中工作(因为我忘了检查我的dev分支).

我可以为master分支建立一个规则,它表示我不能提交,快进合并,但只能--no-ff从另一个分支合并?

这必须适用于私有托管存储库(而不是GitHub和BitBucket).

git merge fast-forward

52
推荐指数
3
解决办法
2万
查看次数

如何在 GitHub 上进行快进合并?

因此,我的一位同事尝试在 Web 界面中使用 GitHub 的“通过快进合并”选项来合并一个分支,以保持历史记录免受虚假合并提交的影响(master他们合并到的分支,自从到-合并功能分支已启动)。

有趣的是,这并没有按预期工作:所有提交都有新的提交哈希。

仔细检查一下,似乎合并选项实际上被称为“Rebase and Merge”,它似乎确实相当于git rebase --force改变了提交者信息(进行合并的人以及合并发生的时间)。

我花了很长时间才确认我的怀疑确实如此,因为我无法使用 cmdline 工具向我展示功能分支上的原始提交和看似相同的提交(具有不同的哈希值)之间的区别在主分支上。(最后,我发现,gitk同时显示了提交者和提交作者;在非常最后我发现我也能得到通过这些信息git log --pretty=raw

所以:

  • 有没有办法做一个“适当的”快进合并(git rebase 无需--force通过GitHub的Web界面选项)?
  • 如果不是:为什么?(我可以看到问责制的优点;例如,它回答了谁对一段给定的代码最终出现在 中的问题负责master

github git-merge fast-forward

29
推荐指数
4
解决办法
3936
查看次数

Git Merge Fast-Forward 与 Git Rebase

git merge快进和快进有什么区别git rebase?难道两者都没有实现保持历史线性并且没有合并提交吗?如果是这样,为什么人们会使用其中一种而不是另一种?如果不是,我认为这是真的,那么我没有看到的整个故事是什么?

谢谢!

git git-merge git-rebase fast-forward

23
推荐指数
2
解决办法
2万
查看次数

如何以编程方式快进单个git提交?

我定期从git获取看起来像这样的消息:

Your branch is behind the tracked remote branch 'local-master/master' 
by 3 commits, and can be fast-forwarded.
Run Code Online (Sandbox Code Playgroud)

我希望能够在shell脚本中编写命令,可以执行以下操作:

  1. 如何判断我当前的分支是否可以从它正在跟踪的远程分支快进?

  2. 如何判断我的分支"后面"有多少提交?

  3. 如何通过一次提交快进,以便例如,我的本地分支将从"后面的3次提交"变为"后面的2次提交"?

(对于那些感兴趣的人,我正在尝试组合一个高质量的git/darcs镜像.)

git git-pull fast-forward

17
推荐指数
3
解决办法
2万
查看次数

撤消git快进合并

我有这种情况:在一些testBranch上工作一段时间,我想与master同步,所以我做了git checkout testBranch和git merge master/testBranch

所以现在我的分支与master同步,但后来我发现我想撤消合并,问题是合并是用快进完成的,现在我的提交历史与主提交和testBranch提交混合,我不知道如何在我的testBranch上合并之前恢复到状态.

谢谢你的帮助

git git-merge fast-forward

13
推荐指数
2
解决办法
4930
查看次数