先来解释一下这句山不就我,我就山。
有一个大师,一直潜心苦练,几十年练就了一身“移山大法”。
有人虔诚地请教:“大师用何神力,才得以移山?我如何才能练出如此神功呢?”
大师笑道:“练此神功也很简单,只要掌握一点:山不过来,我就过去。”
现实世界中有太多的事情就像“大山”一样,是你无法改变的,或者至少是暂时 无法改变的。
如果事情无法改变,你就改变自己。只有改变自己,才会最终改变别人;只有改变自己,才可以最终改变属于自己的世界。山,如果不过来,那你就自己过去吧!
博主新换了一个环境,一下子又要回到svn的年代,虽然最初使用的版本工具是这个,但是N久不用,难免有点不适应。
经过了一周多的努力,还是各种不爽,感觉Idea这个工具天然就是要和git结合一样,所以怒找方案,我要想办法用git。
经过查找,大致有这么几个思路:
1. 在服务器上加装软件(subgit)
2. 可视化操作(smartgit)
3. 命令行做git与svn的同步
我采用的是第3种方案,因为本人懒得去学那么多的可视化操作工具,还是命令行来得统一、方便、快捷(idea中alt+f12)。
具体的实施方案:
- 检出代码:git svn clone repo_url -s --prefix=svn/
参数说明:
此命令是将代码从svn检出,在本地模拟git提交,所以检出过程较慢,耐心等待即可。
-s参数其实是-T trunk -b branches -t tags的缩写
--prefix=svn/是给所有的remote分支添加一个前缀
- 检出分支,git checkout -b <本地分支名称> <远程分支名称>,也可在idea中进行分支检出。
- 修改代码,然后git commit -m "",此操作可在idea工具内完成。
- 提交前先更新svn代码 git svn rebase,命令行操作(在Idea里 alt+f12打开终端),相当于用git push前先pull一下
- 向svn提交代码git svn dcommit,相当于git push操作,操作方式同4。
至此,一个完整的在svn环境下使用git的流程就基本结束,目前亲测和在用svn的同事协作没有问题。建议把更新svn代码与提交至svn的命令自己alias一下,方便操作,下面是我的两个alias,大家参考。
alias gsvnco='git svn clone -s --prefix=svn/'
alias gsvnci='git svn dcommit'
alias gsvnup='git svn rebase --fetch-all'
参考:
https://www.cnblogs.com/h2zZhou/p/6136948.html
https://git-scm.com/docs/git-svn