我们是一个开发人员团队,他们从SVN转换为git认为这将更简单,更标准。不幸的是,直到现在,我们只遇到失败和问题。
我们不需要特征分支。我们有一个称为"开发"的单个分支。所有开发人员都在共享。
我们已经习惯了totoisesvn,所以我们决定与UI一起使用totoisegit。
提交和推动很棒。问题带来了拉动操作。SVN很棒,即使在本地更改中,它也下载了新版本,自动合并了可能的方法,并要求解决相互矛盾的文件。在git下,如果您使用相同的文件进行本地更改,则只会停止此处(即使它可以自动合并)。您有两种选择,要么提交本地更改(即使您在中途完成工作),这些更改污染了"显示日志"窗口,其中有大量无用的提交,或藏匿,拉动,pop stash,它们做的类似于SVN的事情一些无用的步骤。有更好的方法吗?
储藏式流行操作尝试自动合并(尼斯),但在真正的冲突中,事情变得不好。在SVN下,很容易,您将新文件的一侧和diff视图另一侧的本地文件放在了,只需修复您的本地侧并将其保存并标记为解决方案即可。在git下,您有四个文件,"正常"一个,一个基础一个,一个遥控器和本地文件。一个完全混合的事情是,"远程"文件(它们的)实际上是包含您更改的藏匿文件,因此它没有帮助。
因此,您选择打开合并工具的"编辑冲突"菜单选项。Tortoisegitmerge界面不是很友好,KDIFF3在线广泛使用,因此我们决定使用它。因此,您按下"合并"按钮,该按钮可以创建一个"合并"选项卡,并在与冲突的线路上,可以按A,B,C按钮。到现在为止,还可以。问题是,当您保存此结果文件时,它将保存在file.cs.local.cs(而不是file.cs?)下。然后,在Tortoisegit下,无论您选择"解决","使用我的解决方案"或"解决"或"解决",它都会删除您的合并文件,并为您提供错误的最终文件版本(未完成合并工作)。我们设法获得它的唯一方法是对合并文件进行临时备份,将其标记为解决,然后重新复制备份。我勒个去?我们的工作流在哪里我们做错了什么?
我会尝试给一些指示和提示。首先,我只是说。如果您只需要SVN功能,那么去GIT并不重要。在这种情况下,SVN很好。git可以做很多更强大的事情,但是您必须在gitway上做很多事情,任何其他方法都会很麻烦。
也就是说。如果您的长期目标是完全采用git以为认为这可能有助于"做",就像SVN一会儿并逐渐改变您的思维一样。
当您进行git pull
时,它实际上是在做两件事之一
git fetch
git merge
或
git fetch
git rebase
它取决于配置设置或选项--rebase
。在本地分支(甚至是本地主人)上,我更喜欢重新恢复,但是当涉及冲突时,"他们的"one_answers"我的"非常令人困惑,但这就是发生的事情。
- git将首先倒带您的工作副本,然后回到本地分支和原始分支分歧
- 然后应用所有来自原点的提交。
- git将尝试重新申请您的承诺。如果发生冲突,现在将会称您的更改,那么重新申请"他们的"是正确的,但非常令人困惑。将"我的"视为工作副本中已经存在的内容,而将"他们的"是添加的内容,这是更有意义的。
当您进行合并而不是折叠时,那是相反的方式。您的更改已经在工作副本中,即"我的",并且正在合并的更改为"他们的"。不幸的是非常令人困惑。
我从来没有使用过kdiff3或tortoisegit,所以我无能为力,但是我会这么说,如果您使用命令行工具发生冲突,则使用原始名称的文件将充满冲突标记,就像SVN一样。使用您舒适的任何工具来解决冲突,然后
git add <conflict file>
git rebase --continue
或
git add <conflict file>
git commit
取决于您是否确实重现或合并以解决冲突并继续前进。