我们是一个从 SVN 切换到 Git 的开发人员团队,他们认为它会更简单、更标准。不幸的是,直到现在我们只遇到了失败和问题。
我们不需要功能分支。我们有一个名为“develop”的分支,所有开发人员都在共享它。
我们习惯了 TortoiseSVN,所以我们决定使用 TortoiseGit 来开发 UI。
提交和推送效果很好。拉动操作出现问题。SVN 很棒,即使有本地更改,它也会下载新版本,自动合并可能的内容并要求解决冲突文件。在 Git 下,如果您对相同的文件进行了本地更改,它就会停在那里(即使它可以自动合并)。你有两个选择,要么提交你的本地更改(即使你完成了一半的工作),这会污染“显示日志”窗口,其中包含大量无用的提交,或者 stash、pull、pop stash,它们的作用类似于 SVN 正在做的事情一些无用的步骤。有更好的办法吗?
stash pop 操作尝试自动合并(很好),但是在真正的冲突中事情变糟了。在 SVN 下很容易,您在差异视图的一侧拥有新文件,在另一侧拥有本地文件,只需修复您的本地侧并将其保存并标记为解析。在 Git 下,您有四个文件,“普通”文件、基本文件、远程文件和本地文件。一件完全混淆的事情是“远程”文件(他们的)实际上是包含您的更改的隐藏文件,因此它无助于清晰。
因此,您选择打开合并工具的“编辑冲突”菜单选项。TortoiseGitMerge 界面不是很友好,而 KDiff3 在网上被广泛使用,所以我们决定使用它。因此,您按下创建“合并”选项卡的合并按钮,在有冲突的行上,您可以按下 A、B、C 按钮。到现在为止,还好。问题是,当您保存此生成的文件时,它保存在 file.cs.LOCAL.cs 下(而不是 file.cs?)。然后,在 TortoiseGit 下,无论您选择“已解决”、“使用我的解决”还是“使用他们的解决”,它都会删除您的合并文件并为您提供最终文件的错误版本(没有完成合并工作)。我们设法得到它的唯一方法是对合并文件进行临时备份,标记为已解决并重新复制备份。我勒个去?在我们的工作流程中,我们做错了什么?