我很难找出一个好的标题,所以如果你有一个想法如何以更清晰的方式表达我的问题,请编辑。已经存在的SVN项目的常见git回购
我正在使用SVN的大项目。由于我习惯于使用git(经常提交,与许多分支机构合作),也不想更改我的工作流,因此我在SVN工作副本的父目录中设置了一个git存储库,以进行本地版本控制。所有SVN相关文件已包含在.gitignore
中。使用git-svn对我来说不是一个真正的选择,因为我不想用我所有的小提交“污染”SVN回购。
现在我已经开始在同一个项目上与另一个人(叫他B人)的工作密切相关的工作。然而,他并没有准备好将自己的工作推到SVN仓库中,所以最初他手动给了我他更改过的文件,并将它们包含在我的分支topic
的项目中。由于这个过程非常费力,我们决定使用git来交换项目的进度。
因为我不想与人B的SVN一塌糊涂,我的想法是以下几点:
- 我创建了一个裸露的回购从我的混帐回购协议,并把它这是由人访问的服务器上乙
- 某乙运行
git init
,复制了我的.gitignore
文件,运行git add .
,使他最初提交 - 某乙重命名自己的分支
topic
,增加了裸回购我远程origin
创建和获取所有数据
由于我已经将他的工作包含在我的回购库中,因此人员B的topic
和origin/topic
现在应该没有任何区别。但他们这样做。我曾经遇到过
两个问题(有可能更多):
- 某些文件已被添加到,即使他们是
.gitignore
名单上(这是工作的完全相同的文件某乙的混帐回购协议对我罚款) - 当运行
git diff topic origin/topic
它显示一个文件删除两个话题和来源/主题,这肯定存在(以产地/话题道:/dev/null
)
没有任何人有一个id ea这里发生了什么问题?也欢迎提供替代方案的建议,但请注意,B人员在整个项目中将他的更改推向SVN回购和/或完全放弃SVN是没有选择的。
当你说你不想用小提交污染SVN回购时,我很困惑。你的提交直到你推动才会触发SVN,所以你可以在推送前清理你的历史记录,一切都会好的。我在与Mercurial合作时正在做类似的事情。 – Ben
我不想使用git-svn的另一个原因是我想100%肯定不要搞乱任何东西。此外,我想保持我的提交历史是这样,但仅限于我自己。但是,感谢您的反馈! – LLang