Tortoise SVN:使用“他们的”解决冲突。这是啥意思?

Posted

技术标签:

【中文标题】Tortoise SVN:使用“他们的”解决冲突。这是啥意思?【英文标题】:Tortoise SVN: Resolve conflict using 'theirs'. What does it mean?Tortoise SVN:使用“他们的”解决冲突。这是什么意思? 【发布时间】:2011-04-30 06:35:14 【问题描述】:

有人可以解释一下Tortoise SVN在冲突文件上的以下两个选项之间的区别:

使用“他们的”解决冲突。 使用“我的”解决冲突。

附带说明。为什么到底没有人将这种令人困惑的术语使用报告为错误?

【问题讨论】:

混淆可能是因为不理解“他们的”和“我的”的上下文 我是因为这种困惑才来到这里的,尽管不是在 Tortise SVN 中,而是从命令行。在命令行更新时,选项为“theirs-conflict”,对于选择它是否会使其处于冲突状态或解决它是模棱两可的。 合并时更令人困惑,它会将术语切换为“本地”和“存储库”。在这种情况下,我一点也不清楚。 我一次又一次地回到这个页面。为什么他们不只是说“更喜欢本地更改而不是存储库更改”和“更喜欢存储库更改而不是本地更改”或类似的逻辑且易于理解的内容。我知道它有点长,但在这种情况下,更少,绝对不是更多。 绝对模棱两可。查看其他人的分支,然后将您所做的分支中的更改合并到其中。看看你的和我的对比有多清晰。 【参考方案1】:

使用“他们的”解决冲突意味着当您尝试签入两个具有冲突编辑的文件时,SVN 将放弃您的更改并使用其他人的更改。

使用“我的”解决冲突意味着您将放弃他们的更改,并改用您的文件版本。

【讨论】:

查看图片,其中解释了很多:tortoisesvn.net/docs/release/TortoiseMerge_en/… 这个答案根本没有解决他们与我之间的歧义。我刚刚被要求将我一直在处理的分支中的更改合并到其他人一直在处理的分支中。在这种情况下,我认为“我的”的更改来自我的分支。但是,如果我接受“我的”更改,我实际上会从我的分支中丢弃更改。 我在菜单的任何地方都没有看到“使用mine 解决冲突”。有没有办法确保我的更改与他们的更改合并? 是的,我不明白这个答案。没有“其他人”【参考方案2】:

我想添加整个列表以供进一步参考:

(e)  edit             - change merged file in an editor
(df) diff-full        - show all changes made to merged file
(r)  resolved         - accept merged version of file

(dc) display-conflict - show all conflicts (ignoring merged version)
(mc) mine-conflict    - accept my version for all conflicts (same)
(tc) theirs-conflict  - accept their version for all conflicts (same)

(mf) mine-full        - accept my version of entire file (even non-conflicts)
(tf) theirs-full      - accept their version of entire file (same)

(p)  postpone         - mark the conflict to be resolved later
(l)  launch           - launch external tool to resolve conflict
(s)  show all         - show this list

【讨论】:

【参考方案3】:

我同意。

在我看来,如果它说:

使用存储库(他们的)解决 使用工作副本解决(我的)

【讨论】:

在我看来,最好的答案可能是在没有第二个人参与的情况下发生冲突(例如,当使用具有多个分支的 git flow 时)。 现在“标记为已解决”有什么作用?它是用我的还是他们的?! 它只是删除冲突标志并使用合并文件的当前状态。通常您会查看冲突并更正任何问题,然后将其标记为已解决。此问题中讨论的两个选项是仅使用您的版本或 repo 中的版本来解决冲突的快捷方式。这样做会自动将其设置为已解决,而当您手动更正冲突时,您必须“标记为已解决”。【参考方案4】:

SVN 命令行合并令人困惑,尤其是在将分支合并回主干时。 “我的更改”是我在分支中所做的更改,但 根据 SVN 是错误的。更复杂的是,SVN 在命令行帮助中将路径称为 SOURCE、TARGET 和 HEAD。

这是简单的答案,如果您从目录 C:\Project1\Trunk

运行此合并语句
svn merge -r 60:68 C:\Project1\branches\UpdatesToProject1

“Mine”是运行 SVN 的目录 (C:\Project1\Trunk)。

“Theirs”是您要合并的目录,并已在命令行中指定(C:\Project1\branches\UpdatesToProject1)

如果 SVN 给出了 MINE 和 THEIRS 所指的路径,那就太好了。

【讨论】:

这个答案应该更高。我们使用分支与主干,它变得非常混乱。【参考方案5】:

BuzzAnn 是正确的。 我的 vs 他们的 是模棱两可的,因为存储库中的内容也可能是我的。明确的区别是存储库与本地副本

【讨论】:

【参考方案6】:

如果您接受存储库中的内容不再(单独)属于您,而是与所有有权访问的人共享,那么它可能会更清晰。

在这种情况下:

“他们的”表示“团队在存储库中的共享代码” “我的”是指(我的)“工作副本”(可能在本地机器上)

所以: “使用他们的”用共享副本替换您的工作副本,丢弃本地计算机上存在的更改。 “使用我的”决定你的工作副本中的代码应该保存在存储库中,丢弃当前在存储库中的代码。

【讨论】:

以上是关于Tortoise SVN:使用“他们的”解决冲突。这是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

有人在同一台机器上同时使用Tortoise Git和Subversion吗?

svn commit failde 求教 急等

SVN 的使用 Tortoise 的使用

Tortoise SVN 提交错误

Tortoise SVN系列:Eclipse下的SVN

Tortoise SVN使用方法,简易图解