山不就我,我就山——在svn的环境里使用git

2018-09-06  本文已影响0人  麻吕

先来解释一下这句山不就我,我就山。

  有一个大师,一直潜心苦练,几十年练就了一身“移山大法”。
  有人虔诚地请教:“大师用何神力,才得以移山?我如何才能练出如此神功呢?”
  大师笑道:“练此神功也很简单,只要掌握一点:山不过来,我就过去。”
  现实世界中有太多的事情就像“大山”一样,是你无法改变的,或者至少是暂时 无法改变的。
  如果事情无法改变,你就改变自己。只有改变自己,才会最终改变别人;只有改变自己,才可以最终改变属于自己的世界。山,如果不过来,那你就自己过去吧!

  博主新换了一个环境,一下子又要回到svn的年代,虽然最初使用的版本工具是这个,但是N久不用,难免有点不适应。
  经过了一周多的努力,还是各种不爽,感觉Idea这个工具天然就是要和git结合一样,所以怒找方案,我要想办法用git。
  经过查找,大致有这么几个思路:
   1. 在服务器上加装软件(subgit)
   2. 可视化操作(smartgit)
   3. 命令行做git与svn的同步
  我采用的是第3种方案,因为本人懒得去学那么多的可视化操作工具,还是命令行来得统一、方便、快捷(idea中alt+f12)。

具体的实施方案:

  1. 检出代码:git svn clone repo_url -s --prefix=svn/

 参数说明:
   此命令是将代码从svn检出,在本地模拟git提交,所以检出过程较慢,耐心等待即可。
   -s参数其实是-T trunk -b branches -t tags的缩写
  --prefix=svn/是给所有的remote分支添加一个前缀

  1. 检出分支,git checkout -b <本地分支名称> <远程分支名称>,也可在idea中进行分支检出。
  2. 修改代码,然后git commit -m "",此操作可在idea工具内完成。
  3. 提交前先更新svn代码 git svn rebase,命令行操作(在Idea里 alt+f12打开终端),相当于用git push前先pull一下
  4. 向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

上一篇 下一篇

猜你喜欢

热点阅读