如何将您的工作方式从CVS迁移到Git?
我们正在将旧的CVS服务器迁移到git上,但在过去的30年中,一位主要的开发人员一直在使用CVS,这让我有些后顾之忧。我认为他在对付git时遇到了一些困难。他给了我他的意见,我想知道如何挑战或解决其中的一些问题:如何将您的工作方式从CVS迁移到Git?,git,cvs,merge-conflict-resolution,Git,Cvs,Merge Conflict Resolution,我们正在将旧的CVS服务器迁移到git上,但在过去的30年中,一位主要的开发人员一直在使用CVS,这让我有些后顾之忧。我认为他在对付git时遇到了一些困难。他给了我他的意见,我想知道如何挑战或解决其中的一些问题: 例如,无法合并对不同分支的提交 小项目,我看到这是工作,但对于我们的项目,我们仍然 需要创建单独的分支来移动特定的修复。”上下文:目前,他在我们每次创建发布时(每季度)都会创建一个特殊的发布分支。一些客户升级到新版本,但其中许多仍在旧版本上,并经常收到修复。当他在一个较旧的分支中实现了
git日志——所有这些都是随机文件,你将得到它的历史记录。您甚至可以添加--graph
,git甚至会尝试从不同的分支创建一个树(至少gitk会这样做,所以我假设git也会这样做)
4-我打赌git在本地提交所需的时间比在中央服务器上提交cvs所需的时间要少得多。当存在冲突时,cvs是否允许您提交内容
总的来说,我会说:git有非常不同的工作流,需要时间来适应它,但我很难找到一个人在使用DVCSs后决定回到集中式
欢迎来到SO。我发现让某人相信一个新系统是好的最好方法是善于使用它,然后向他们展示你能用它做什么
我很少将争论视为说服某人采用新技术(语言、操作系统、源代码控制系统等)的成功方式
“告诉我如何让这个新系统和我的旧系统一模一样”的问题只意味着他们想要保留旧系统
“我如何让我的同事相信git是好的?”这个问题远远超出了stack Exchange帖子所能回答的范围,但我重申,“展示优势”
尽管如此,这里有一些想法可能有助于解决您提出的具体问题
旧分支上的新修复。您可能会发现,可以使用cherry pick将新修复应用于旧分支,而无需将新分支中的所有更改合并到旧分支中。
当然,请记住,新的修复可能取决于新分支中的其他更改,但无论您使用的是什么源代码管理系统,这都适用
看起来很像。见(1)的答案
历史档案。
下一行将显示文件的提交历史记录
git日志--文件的路径
如果在此过程中已重命名该文件,--follow选项仍将跟踪该文件
git log--follow--path to file(注意:--follow没有空间。下一个--follow周围有空间)
如果希望看到每个提交所做更改的差异,请添加-p选项
git日志--follow-p--文件路径
请注意,文件路径是从git repo顶部到文件的路径,还应包括文件名
真正的问题是:人们不喜欢他们不知道如何使用的东西。
如果你和你的同事都学会了git提供的所有东西,你可能会成为你的忠实粉丝。只是想起了它是如何与CVS协同工作的。让文件作为单独的实体工作实际上并不是一个好方法。。。这是一个骗局,因为对多个文件的更改如果构成一个更改,则应该是原子性的。。。。如果你修改5个文件以进行一次更改(这是svn和git在创建新版本时所做的),如果你只是从一个文件中移动更改,那将是完全错误的。作为旁注:你是否让他看了14年前linus在google做的关于git的演讲?我相信他会喜欢的。XD感谢您提醒CVS以非原子方式逐文件提交。我现在想起了在CVS中恢复多文件提交是多么恐怖的一件事。特别是如果在这些事件之上发生了其他事件。在这一点上,如果CVS是唯一的源代码管理选项,我会拒绝一个作业。另外,如果你为git选择了这一政策,你很可能无法就业……简单地说,关于你的评论/问题“CVS是否允许你在发生冲突时提交内容?”是的。我曾经在一家有很多程序员的大公司工作过,偶尔也会有