【发布时间】:2016-01-09 14:15:35
【问题描述】:
我很难找到一个好的标题,所以如果你知道如何更清楚地表达我的问题,请编辑。
我正在做一个使用 SVN 的大项目。由于我习惯使用 git(经常提交,使用许多分支)并且也不想更改我的工作流程,因此我在我的 SVN 工作副本的父目录中设置了一个 git 存储库,用于本地版本控制。所有 SVN 相关文件都已包含在 .gitignore 中。使用 git-svn 对我来说并不是一个真正的选择,因为我不想用我所有的微小提交来“污染”SVN 存储库。
最近我开始了与另一个人(称他为 B 人)在同一项目上的工作密切相关的工作。然而,他还没有准备好将他的工作推送到 SVN 存储库中,所以最初他手动给了我他更改的文件,我将它们包含在我的项目中的分支 topic 中。由于这个过程非常费力,我们决定使用 git 来交换项目的进度。
因为不想乱搞B人的SVN,所以我的想法是这样的:
- 我从我的 git 存储库创建了一个裸存储库,并将其放在 B 人可以访问的服务器上
- 人 B 运行
git init,复制我的.gitignore文件,运行git add .并进行初始提交 - B 人将他的分支重命名为
topic,将我创建的裸仓库添加为远程origin并获取所有数据
由于我已经将他的工作包含在我的 repo 中,所以 B 的 topic 和 origin/topic 现在应该完全没有区别。但他们确实如此。
我遇到的两个问题(可能还有更多):
- 一些文件已添加到 B 的 git 存储库中,即使它们位于
.gitignore列表中(这与我工作正常的完全相同的文件) - 在运行
git diff topic origin/topic时,它显示一个在主题和源/主题中肯定存在的文件被删除(源/主题中的路径:/dev/null)
有人知道这里出了什么问题吗?也欢迎提供替代方案的建议,但请注意,B 人将他的更改推送到 SVN 存储库和/或在整个项目中完全放弃 SVN 是没有选择的。
【问题讨论】:
-
当你说你不想用小提交污染 SVN 存储库时,我很困惑。在您推送之前,您的提交不会命中 SVN,因此您可以在推送之前清理您的历史记录,一切都会好起来的。我正在使用 Mercurial 做类似的事情。
-
我不想使用 git-svn 的另一个原因是我想 100% 确保不会搞砸任何事情。我也想保持我的提交历史,但只是为了我自己。不过感谢您的反馈!
标签: git svn version-control