相关疑难解决方法(0)

Git:找到两个分支的最新共同祖先

如何找到两个Git分支的最新共同祖先?

git

787
推荐指数
4
解决办法
14万
查看次数

GIT:我怎样才能阻止foxtrot在我的'master'分支中合并?

foxtrot合并是一种合并,其中'origin/master'作为第二个(或更晚的)父级合并,如下所示:

提交'D'是foxtrot合并,因为'origin/master'是它的第二个父级.

提交'D'是foxtrot合并,因为'origin/master'是它的第二个父级.注意此时来自"origin/master"的第一父历史如何包含提交"B".

但是在我的git repo中,我需要所有涉及'origin/master'的合并来保持'origin/master'作为第一个父级.不幸的是,git在评估提交是否符合快进条件时并不关心父级.这会导致我的主分支上的第一个父历史记录有时会丢失曾经存在的提交(例如,输出"git log --first-parent").

以下是推送前面图表中提交"D"时发生的情况:

我怎样才能防止这种推动? 推送foxtrot合并后,'origin/master'的第一父历史不再包含提交'B'!

我怎样才能防止这种推动?推送foxtrot合并后,'origin/master'的第一父历史不再包含提交'B'!

显然没有提交或工作实际上丢失,只是在我的环境中我真的需要"git log --first-parent"作为一个稳定的提交累积记录 - 如果你愿意,一种"一次写入读 - 许多"(WORM)数据库.我有脚本和进程使用"git log --first-parent"来生成更改日志和发行说明,以及管理我的票证系统(JIRA)中的票证转换.Foxtrot合并破坏了我的脚本!

是否有某种预接收挂钩我可以安装在我的git存储库中以防止foxtrot合并被推送?

ps使用http://bit-booster.com/graph.html生成此stackoverflow问题中的提交图.

git merge git-merge

30
推荐指数
2
解决办法
7163
查看次数

git commit --amend是如何工作的?

在独立的HEAD状态下看过GIT commit --amend.这个问题要求答案比需要的要复杂得多.我想了解git commit --amend在正常HEAD情况下​​的工作原理.

git git-amend git-commit

11
推荐指数
2
解决办法
3357
查看次数

Mercurial合并策略与Git合并策略

我已经使用git多年了,最近换成了一个项目的mercurial.在过去的6个月里,我已经学会了如何通过命令行很好地使用Mercurial.

这可能是我的想象,但在我看来,mercurial在合并时更糟糕,并导致更多冲突的文件.我会经常将默认分支合并到我的功能分支中,它有时会做一些非常时髦的事情,并且无法自动合并看起来应该在视觉上合并的文件 - IE在同一行上没有变化等.

我做了很多研究,看看合并算法可能有什么不同,运气很少.大多数文章都是人们关于git和mercurial如何工作的意见和信息,而没有太多关注合并算法本身以及差异的简单语言示例的上行/下行.

我总是使用良好的合并策略并通过树合并,并且永远不会进入默认(hg)/ master(git)分支而不首先合并到远程以确保没有冲突.

到目前为止,我在研究中发现的是:

1)Mercurial不能合并或有多个父母合并的问题.我不确定有人会在这种情况下结束,但也许这很常见?

这是真的?这会导致每天开发中更频繁地合并冲突吗?

2)Mercurial不支持章鱼合并,git就是这样做的.

对于章鱼合并,我说"谁在乎!",这不是必需品.

除此之外,似乎合并算法同样创建?是否可以更改合并算法?这有什么好文章吗?

如果您在k3diff,p4merge和meld之类的合并工具上发布信息,那么您就错过了重点 - 我想在冲突解决之前获得有关自动合并策略的信息.

感谢您提供有用的参考和/或信息!

git merge mercurial

4
推荐指数
1
解决办法
1146
查看次数

标签 统计

git ×4

merge ×2

git-amend ×1

git-commit ×1

git-merge ×1

mercurial ×1