我现在已经使用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分支和融合.
我可以为git-svn托管存储库中的"拉"/"推"设置挂钩吗?
情况是我在Google Code上有一个项目主持人,并使用git来管理本地工作副本.我想设置一些钩,以便从/检查时输入/输出数据到SVN仓库与git svn fetch和git svn dcommit,我可以做一些修改提交.由于我没有托管SVN存储库,因此我无法在服务器端设置挂钩.
我可以使用任何钩子吗?或者是有办法"标记"一个普通的分支,以便git pull与git push该分支将登入/登出从/到SVN仓库,而不是,因此可以使用普通的Git挂钩?
提前致谢.
我一直面临着理解裸存储库的困难.我到处都读到共享的回购是一个简单的回购.为什么它必须是一个简单的回购?它不能是合作者克隆然后推/拉的正常回购吗?
我正在使用git来管理我的grails项目.我在远程服务器上设置了一个git存储库,我想要做的就是当我在本地运行代码时,我想提交它并推送到远程服务器.我希望将更新的groovy文件和gsp放在远程服务器上的正确位置,以便grails将获取远程测试的更改.这可能吗?
Git是否支持任何允许我直接从本地/工作树提交到远程存储库的命令?正常的工作流程需要"git add",至少要用文件内容的副本等填充对象数据库.
我知道这不是正常的,预期的Git工作流程.但我注意到Git已经支持直接从存储库下载,没有本地存储("git archive"),所以可能存在类似的上传操作似乎是合理的.
或者,如果核心Git本身没有这样的命令,那么任何第三方软件是否支持直接远程写入?
我在projectlocker上设置了一个git项目来推送我的git文件.然后我进入了初始化git项目并暂存我的文件的目录.最后我尝试使用此命令将项目推送到projectlocker:
$ git push git-smichaels@free5.projectlocker.com:helloworld.git
Run Code Online (Sandbox Code Playgroud)
它会生成此错误:
warning: You did not specify any refspecs to push, and the current remote
warning: has not configured any push refspecs. The default action in this
warning: case is to push all matching refspecs, that is, all branches
warning: that exist both locally and remotely will be updated. This may
warning: not necessarily be what you want to happen.
warning:
warning: You can specify what action you want to take in this case, and
warning: …Run Code Online (Sandbox Code Playgroud)