经差出差且断网,如何做好程序的版本控制

  • A+
所属分类:IT技术

经差出差且断网,如何做好程序的版本控制

平常工作会较多出差,并且很多时候会在出差地点修改功能,没有网络,那么,出差在外场后,代码的版本控制成为了管理代码的根本性问题,在外场缺少版本控制,代码也就缺少管理,不仅会导致外场代码的混乱,也会导致单位内部的代码混乱。如果不打通单位和外场之间的代码合并问题,那么,只能采用人工方式合并单位内部和外场的代码,久而久之,员工会觉得人工合并极其麻烦,能省则省,修改的代码也就合并不到单位内部。

针对这种问题,我想了如下建议:

采用git进行版本管理,为什么选择git,而不是svn?其实我们会用到git的分布式特性,git可以在任意版本进行本地合并,而svn是集中式,必须在联网情况下合并到仓库中。单位内部开发直接利用git的基本功能即可完成内部的版本管理。出差外场前,找一台机器,将单位内部某一版本的工程克隆到该机器中,同时外场搭建一台git服务器,将该机器带去的代码导入到外场的git服务器中,大家围绕该版本进行开发和版本管理,回单位后,按照同样方法将版本合并到单位的git服务器中。

这样做,不仅在单位内部实现了版本控制,在外场也能实现版本控制,同时,单位和外场之间也可以自动实现代码合并。在该流程中,外场也可以实现自动合并代码,这样做不仅能够让程序员在完成代码的较短时间内合并代码,减少合并的错误率和遗失率,同时,可以让开发人员在外场完成代码的合并,以免出差归来无心合并代码。

具体git命令及步骤

前提条件:单位内部部署git服务器,外场部署git服务器。

  • 单位内开发

从单位git服务器clone代码,开发代码并push到单位内git服务器上

  • 出差准备

从单位git服务器clone最新的代码,带去外场

  • 外场合并单位代码

1、将从单位git服务器克隆的最新代码拷贝到外场某台机器上,比如拷贝到F:/cangku/project目录下

2、准备一个用于合并单位代码的目录,clone外场git服务器上的最新代码,比如F: /testcangku/testcangku

3、cd F: /testcangku/testcangku

4 、git remote add other3 F: /cangku/project/.git  //添加F: /testcangku/testcangku的远程仓库地址为F: /cangku/project/.git,并命名为other3

5、 git fetch other3  //将单位最新代码获取到F: /testcangku/testcangku仓库中

6.、git checkout -b repo2 other3/master  //在F: /teatcangku/testcangku下创建repo2 分支,并切换到repo2 分支,复制other3/master的内容到该分支,至此,单位最新的代码都在repo2 分支了。

7、 git checkout master//切换到F: /teatcangku/testcangku的master分支,这里看一下master默认关联的是哪一个远程仓库地址

8、 git merge repo2 //将repo2的内容(单位git服务器的代码)合并到 master分支

9、处理冲突,并编译运行,看看git log否包含了所有的日志内容,并确保修改都以提

10、git push origin//将单位代码合并到外场git服务器上

  • 回单位前的准备

从外场git服务器clone最新的代吗,带回单位

  • 单位合并外场代码

1、将从外场git服务器克隆的最新代码贝到单位某台机器上,比如放到F: /testwaichang/testcangku/

2、克隆单位内git服务器上的最新代码,比如F:/cangku/project/

3、cd F: /cangku/project/

4、 git remote add other F: /testwaichang/testcangku/.git // F:/ cangku/project/仓库的远程地址为F: /testwaichang/testcangku/.git,并命名为other

5、 git fetch other //将外场最新代码获取到F:/cangku/project/仓库中

6、 git checkout- b repo3 other/master //在F:/cangku/project/仓库创建名为repo3 的分支,复制other/master的内容到该分支,至此,外场最新的代码都在repo3 分支了。

7、 git checkout master //切换到F:/ cangwu/project/仓库的 master分支,这里看一下master默认关联的是哪一个远程仓库地址

8、 git merge repo3 //将repo3的内容(外场git服务器的代码)合并到 master

9、处理冲突,并编译运行,看看git log是否包含了所有的日志内容,并确认是否提交所有修改

10、 git push origin //将外场代码合并到单位git服务器上

Qt大课堂-QtShare

发表评论

您必须登录才能发表评论!