我现在已经使用git很长一段时间了,主要是git-svn.现在我想说服我的同事从svn切换到git.但不幸的是,前提条件是svn存储库保持相当长的一段时间.所以我搜索了一个解决方案并提出了这本书:
Jon Loeliger的"使用Git进行版本控制".我买了它,它真的很好,但我不完全理解设置git svn看门人回购的指南.
在第16章中,他描述了一种情况,其中有一个Subversion存储库,至少有几个用户想要使用Git.他提出了一个单独的"看门人"git存储库,它是subversion的唯一接口.在git svn克隆了subversion repo(使用--prefix = svn /)后,所有分支都被推送到裸存储库(git push ../svn-bare.git'refs/remotes/svn/:refs/heads/svn / '和其他git用户被告知要克隆这个repo,它现在包含所有svn遥控器的本地分支.
这部分有效,我想我完全理解它.但我没有得到下一部分:
如果一个克隆裸存储库的开发人员将更改从他的repo推回到裸存储库,然后我在svn的裸存储库中提交这个,那么用户推送的提交由于git-svn创建的被替换的提交而有充分理由丢失.还是我错了?这是如何运作的?
这本书说
然后,要合并回subversion,在网守回购中,你做
git checkout svn/trunk(或其他分支 - 这是检查一个分离的头,因为svn/trunk是一个远程)git merge --no-ff new-feature git svn dcommit
如何在裸存储库中签出分支?我觉得这不行
这导致在分离的头上进行合并提交,然后将修改后的提交(在添加git-svn-id行之后)放在真正的svn/trunk分支上.
什么是真正的svn/trunk?
分离头上的提交"比冗余更糟糕.将其用于其他任何事情最终都会导致冲突.所以,只要忘记提交.如果你没有把它放在分支上,那就更容易了忘了"(Jon Loeliger).
我有点困惑.有人为创建一个git svn网守回购有更好的解释吗?我搜索过网站和这个网站,但我找不到任何适合我的网站.
在与同事合作时,我已经厌倦了浪费这么多时间与svn分支和融合.
Subversion几年前很流行,现在git越来越受欢迎,越来越多的人想用git取代Subversion.
问题是很多项目都基于Subversion.所以问题是如何将git与Subversion一起使用.不要完全替换svn,并使用git.
我能想出的最简单的方法是根据你已经检出的Subversion分支代码创建git.然后使用git在本地控制.修改后,提交到本地git服务器,然后使用Subversion检出远程服务器.Subversion就像包含git的容器一样.
顺便说一下,我用xcode 3.x编写代码,之前尝试过xcode 4,但很失望.(Xcode 4现已问世,但尚未重试)
你怎么想 ?或者更好的选择?
谢谢
这里有新的git用户.我想使用git,但我在SVN环境中.从我读过的一些书籍和一些简单的试验中,我遇到了一些令人不安的陷阱,我希望能够澄清如何在没有同事想要杀死我的情况下开始.
我希望我的工作流程是:
一个与svn的主干保持同步的主git分支.
本地git分支,我做我的功能和bug工作.
我想经常使用master更新功能分支.
当我准备好时,我想将一个功能分支与master合并,并将其提交回svn.
这是典型的工作流程吗?
最初我使用git merge来合并我的主分支和功能分支.这导致了各种冲突和问题.我后来阅读以避免使用git merge alltogether并坚持使用git rebase.那么,下面的git命令是否正确?
任何建议或建议,以帮助有抱负的git用户生活在一个svn世界将非常感激.谢谢