如何选择版本控制系统之三---代码托管操作
2017-06-12 09:51 老鱼大哥 阅读(1077) 评论(1) 编辑 收藏 举报往期文章:
《如何选择版本控制系统 ---为什么选择Git版本控制系统》
跨地域开发的需求其实由来已久,并在IT/互联网高速发展的今天越来越普遍,这正是Git版本管理广泛流程的技术原因之一。对于一个开发者如何将本地代码提交到中央仓库,是保证高效异地协同的前提。本文将着重介绍将本地代码提交到托管平台的基本操作。
客户端工具:SourceTree
托管平台:华为软件开发云
如何将本体代码提交到托管平台
1.本地git工具安装&环境配置
a)如果没有安装git客户端,请到https://git-scm.com/downloads下载最新版本
安装完成,运行Git Bash,在弹出终端进行如下配置
![](http://upload-images.jianshu.io/upload_images/5609636-4187cf019f1be457.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
b) SourceTree安装
本文下载安装版本为SourceTreeSetup-2.0.20.1.exe
2.配置ssh密钥
a)生成ssh密钥。运行Git Bash,在弹出的终端中输入下面命令。
![](http://upload-images.jianshu.io/upload_images/5609636-1fb7c6648f4c2987.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
在回车中会提示你输入一个密码,不输入一路回车即可。
b)拷贝ssh密钥到开发云页面。
PC端Git Bash执行命令拷贝公钥
![](http://upload-images.jianshu.io/upload_images/5609636-5bbd3bda68f63110.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
开发云端粘贴公钥
![](http://upload-images.jianshu.io/upload_images/5609636-56cf8f2e0f4820ea.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
c) SourceTree私钥配置
![](http://upload-images.jianshu.io/upload_images/5609636-ad765fe1db303fe9.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
3.新建开发云代码仓库
![](http://upload-images.jianshu.io/upload_images/5609636-88aa98c26b2c794a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
4.PC端拉取开发云仓库代码
(此时仓库里面只有一个初始文件README.md)
在本地想要下载代码的文件夹中空白处右键,选择“Git Clone…”
![](http://upload-images.jianshu.io/upload_images/5609636-a658aee680842145.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
5.提交本地代码到本地仓库
a)修改代码后提交到暂存区
点击“暂存所有”按钮,代码从本地修改区提交到暂存区
b)将暂存区代码提交到本地仓库
添加提交信息,点击“提交”按钮,代码从暂存区提交到本地仓库
![](http://upload-images.jianshu.io/upload_images/5609636-b2121e1d6c5b98ac.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
6.推送代码到远端仓库
a)推送到远端
勾选需要推送的本地分支,点击“推送”按钮
![](http://upload-images.jianshu.io/upload_images/5609636-a913542221bcbf9d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
b)成功提示信息
![](http://upload-images.jianshu.io/upload_images/5609636-f168c1f46eb67222.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
单人使用
场景:同一个人分别在本地feature分支和master分支提交了代码,然后想将feature分支的修改merge到master分支。可是由于两个分支上的提交修改了同一行代码,所以merge产生了冲突,需要手动解决。
说明:如果没有冲突,merge自动完成。
新建feature分支
![](http://upload-images.jianshu.io/upload_images/5609636-872664e16f6ea98f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
在feature分支提交代码
![](http://upload-images.jianshu.io/upload_images/5609636-57d84236a55e2fac.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
切换到master分支
![](http://upload-images.jianshu.io/upload_images/5609636-b5a046cc57012a26.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
在master分支提交代码
![](http://upload-images.jianshu.io/upload_images/5609636-dbfa0d6e4c025955.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
从feature分支向master分支合并
![](http://upload-images.jianshu.io/upload_images/5609636-2859bb47ca6662a1.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
冲突提示
![](http://upload-images.jianshu.io/upload_images/5609636-f7072ce23564cf7c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
本地编辑手动解决冲突
![](http://upload-images.jianshu.io/upload_images/5609636-230287018e2e6ff9.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
解决后(保留master的修改方法)
![](http://upload-images.jianshu.io/upload_images/5609636-afd18c953700d32f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
合并结果推送到软件开发云平台
![](http://upload-images.jianshu.io/upload_images/5609636-9802cb8f82fc6e59.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
多人使用
场景:多人协同,小A打算向开发云托管平台master分支推送本地仓库代码,这时发现远端master分支已经有了小B的新提交,小A需要把远端小B的代码先拉取到本地。可是由于小A和小B修改了同一处代码,发生了冲突。
说明:如果没有冲突,merge自动完成。
托管平台小B提交
![](http://upload-images.jianshu.io/upload_images/5609636-902b744a0081111e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
小A修改代码提交到本地仓库
![](http://upload-images.jianshu.io/upload_images/5609636-80ccbe38df4d07ca.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
小A同步远端仓库
![](http://upload-images.jianshu.io/upload_images/5609636-d911ecd94a73066a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
产生冲突
![](http://upload-images.jianshu.io/upload_images/5609636-9727e267e05294c3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
解决冲突
![](http://upload-images.jianshu.io/upload_images/5609636-1351c7168d9678df.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
提交合并内容
![](http://upload-images.jianshu.io/upload_images/5609636-514ff31de53fe6bb.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
推送合并内容到远端仓库
![](http://upload-images.jianshu.io/upload_images/5609636-5f9d6f7a1ff15f86.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
远端仓库提交记录
![](http://upload-images.jianshu.io/upload_images/5609636-cbc1c12645ef63b2.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)