相关疑难解决方法(0)

你什么时候会使用不同的git合并策略?

从git-merge的手册页中,您可以使用许多合并策略.

  • resolve - 这只能使用3向合并算法解析两个头(即当前分支和你从中拉出的另一个分支).它试图仔细检测纵横交错的合并模糊,并且通常被认为是安全和快速的.

  • 递归 - 这只能使用3向合并算法解析两个磁头.当有多个可用于3向合并的共同祖先时,它会创建共同祖先的合并树,并将其用作3向合并的参考树.据报道,这可以减少合并冲突,而不会因为从Linux 2.6内核开发历史记录中进行的实际合并提交而导致错误合并.此外,这可以检测和处理涉及重命名的合并.这是拉动或合并一个分支时的默认合并策略.

  • 章鱼 - 这解决了两个以上的案例,但拒绝进行需要手动解决的复杂合并.它主要用于将主题分支头捆绑在一起.这是拉动或合并多个分支时的默认合并策略.

  • 我们的 - 这解决了任意数量的头,但合并的结果始终是当前的分支头.它旨在用于取代侧枝的旧发展历史.

  • 子树 - 这是一个修改后的递归策略.当合并树A和B时,如果B对应于A的子树,则首先调整B以匹配A的树结构,而不是读取相同级别的树.这种调整也是对共同的祖先树进行的.

我什么时候应该指定不同于默认值的东西?哪些场景最适合?

git merge git-merge

415
推荐指数
4
解决办法
12万
查看次数

什么是最好的三向合并工具?

Subversion,Git,Mercurial和其他人支持三方合并(结合我的,他们的和"基础"修订版)并支持解决冲突的图形工具.

你用什么工具?Windows,Mac OS X,Linux,免费或商业,您可以命名.

以下是我用过或听过的一些内容,只是为了开始对话:

(我知道这有点像最好的差异工具,但它的不同之处在于我明确专注于三向合并工具; 例如,WinMerge不在列表中.)

version-control merge dvcs

258
推荐指数
12
解决办法
18万
查看次数

什么构成Git中的合并冲突?

git如何确定特定合并是否存在冲突以及冲突是什么?

我的猜测会是这样的:如果合并的两个提交有一个共同的父提交,并且如果他们都改变了父级的X行,那就是冲突.

使我的理解复杂化的是:

  • "更改行X"可能意味着用几个新行替换它,并且仍然显示为一个冲突(版本A有这一行,版本B有这5行,或者其他)
  • 如果你在其中一个提交中插入了行,那么dumber算法会认为所有后续行都已经改变了:第30行现在具有第25行的前内容,31具有前者26的内容,等等.但是git可以告诉那些是一样的,我不知道怎么做.

任何人都可以解释这是如何工作的,或者指向一个链接吗?

git internals

40
推荐指数
2
解决办法
6124
查看次数

Git如何在重构期间跟踪历史记录?

我很清楚Git如何支持文件移动:因为它使用文件哈希,"添加"文件很容易被检测为与"删除"文件相同.

我的问题是关于重构:考虑到Java,包声明会发生变化,因此文件内容将不相同.在这种情况下,Git如何确定"添加"文件与"已删除"文件共享历史记录?它是否检查"最相似的内容",假设我只做了一些小改动,或类似的非确定性解决方案?

git hash refactoring dvcs

17
推荐指数
1
解决办法
5288
查看次数

为什么在Visual Studio 2012中默认情况下自动解决冲突?

我们最近安装了Visual Studio 2012,我正在与我们团队的另一名成员一起开展一个全新的项目,使用Team Foundation Server 2010进行源代码管理.我最近注意到我的一些文件在我办理登机手续时被随机破坏.然后在输出窗口中注意到有关冲突的通知,这些冲突自动解决了!?

事实证明这是Visual Studio 2012中的默认设置!

我在MSDN上发现了一篇关于如何关闭这个心理设置的文章(http://msdn.microsoft.com/en-gb/library/vstudio/ms181432.aspx#automatic_options),但我很好奇是否有人知道为什么这样做潜在的破坏性设置默认会打开?

version-control tfs visual-studio-2012

8
推荐指数
1
解决办法
7869
查看次数