腾讯工蜂Git:基于Git的企业级协作开发解决方案,腾讯未来研发关键系统
https://code.tencent.com
腾讯工蜂用户:熊申平
Git是作为一款最先进的分布式版本控制系统在公司内外越来越流行,目前WeGame中也有部分项目陆续切换到Git,本文根据自己在项目中的使用经验整理而成,期望能帮助团队小伙伴在windows开发环境下从SVN快速切换到Git。
一、Git比SVN好在哪里?
1,Git代码更为安全。在SVN集中式版本控制下,项目成员的代码都要提交到一台中央服务器,如果这台服务器出现问题,大家就不能正常工作甚至代码丢失。
而在Git分布式版本控制下,代码的版本控制是建立在本地机器上的,每个项目成员本地都保存了一份完整的版本库,理论上各成员之间是不需要依赖中央服务器进行版本控制的,但实际工作中还是有一台充当中央服务器的电脑方便成员间交换各自的修改。
2,Git效率更高。用Git进行版本控制,提交代码等一系列操作都是在本地机器上进行的,提交代码、分支切换、版本回退等操作不依赖于网络,所以操作效率更高
3,Git分支管理更加方便。能在一个代码仓库里面进行多个分支的任意切换,一个git checkout 命令就能搞定,切换之后本地代码立即自动更新到对应的分支,而不需要像SVN另外拉取分支代码目录
二、Git环境搭建
1,Git傻瓜式安装。直接去git官网下载安装文件,一步步根据提示选择默认操作即可,目前的安装文件基本都自动配好环境变量,无需手动配置:
安装完成之后,打开命令行工具CMD运行git --version命令,出现git版本号即表示安装成功
2,生成SSH公钥并在代码托管站上进行配置。SSH公钥帮助我们在本地机器跟远程代码托管站之间建立完全链接,并且避免以后向远程代码托管站推送(push)代码的时候重复输入账号密码。
widnows下需要用Git Bash这个工具生成SSH公钥,Git安装过程中会自动安装Git Bash,在桌面上鼠标右键选择Git Bash,
在打开的Git Bash中运行 ssh-keygen -t rsa -C “xxx@x.com”这个命令,出现的几个提示都直接Enter键即可,之后就会生成SSH公钥,一定不能用windows自带的CMD命令行工具,邮箱是你在代码托管站注册帐号的邮箱
ssh-keygen -t rsa -C “xxx@x.com”
接着运行 cat ~/.ssh/id_rsa.pub 命令查看SSH公钥并复制下来:
最后在代码托管站点的SSH公钥设置中配置即可:
(工蜂SSH设置文档:https://code.tencent.com/help/productionDoc/profile#ssh)
至此就完成了整个Git环境的搭建,我们在本地和远程代码托管站之间就能方便的使用Git进行版本控制。
三、Git的基本操作
我们实际项目中基本都会把代码托管在工蜂远程代码托管站点上面,很少只把代码仓库放在本地机器上的,所以这里从代码托管站上开始建立Git项目。
1,在代码托管站建立项目仓库。如图所示:
2,项目仓库建立完成之后克隆到本地,推荐从SSH协议的地址克隆
这个时候就可以打开cmd命令行工具运行git clone xxx 克隆远程项目到本地了
3,把修改的、增加的文件提交到版本库。正式提交版本库之前我们可以通过 git status查看项目文件修改情况,也可以通过git pull命令拉取最新的远程代码托管站上的最新版本,然后执行git add . 命令将所有修改文件提交到本地版本仓库的一个“暂存区”,然后执行git commit -m “注释”命令将提交到“暂存区”的文件正式提交到本地版本库。
至此,你的代码已经处在Git版本控制下了,但为了方便团队小伙伴跟你一起工作,你需要把代码推送到一个其他人能够拉取的地方——代码托管站
4,将本地代码同步到远程代码托管站。我们只需要运行git push命令即可将本地版本库代码推送到远程代码托管站。
四、Git分支管理
在实际项目中,为了降低风险,我们通常会根据项目版本迭代情况建立分支进行开发,在每个分支上完成特定功能的开发,然后将分支代码合并到主干。
我们的项目的代码一般都会放在代码托管站上,所以这里我们还是从代码托管站上建立分支开始。
1,在远程代码托管站上建立分支。点击创建分支的按钮,输入分支名字即可创建,一般默认会创建基于主干的分支
2,拉取远程分支到本地。建立分支之后,运行git pull就能吧远程代码托管站中的项目分支同步到本地
3,切换到分支。通过git pull命令虽然将远程分支拉取到了本地,但本地需要在分支上进行开发还需要运行git checkout xxxx切换到分支,这样在本地代码上所做的修改才是在分支上进行的修改
4,提交代码到本地分支。切换分支完成开发之后,需要将修改的代码提交到本地分支,同样执行git add .和git commit -m "注释"两个命令即可
5,推送分支代码到远程代码托管站。分支完成开发之后同样需要通过git push命令同步到远程代码托管站,以方便其他项目成员更新最新的代码。
6,合并分支到主干。分支功能完成之后需要合并到项目主干,首选需要通过git checkout master命令切换到主干,然后运行git merge origin/branchName 命令即可合并分支代码到主干,合并到主干之后同样需要通过git push命令推送合并了分支的主干到远程代码托管站。
通过以上这些分支操作步骤可以发现,Git的分支切换是相当方便的,不必像SVN那样每个分支都拉取一个项目目录
五、Git GUI之GitHub Desktop
命令行工具可能不太直观,安装Git的过程中也会自动安装一个自带的Git GUI工具,但我更喜欢用GitHub Desktop这个GUI工具来进行版本管理。
1,用GitHub Desktop克隆项目。如图:
选择Clone repository,在弹出框选择URL选项即可用GitHub Desktop克隆其他非GitHub站点的代码仓库
2,用GitHub Desktop提交修改到版本库。如图
GitHub Desktop 中的Commit to xxx这个按钮合并了git add和git commit两个命令,点击该按钮就能提交修改文件到当前分支
3,用GitHub Desktop同步远程代码托管站
如图所示,这个按钮合并了git push和git pull命令,点击Commit to xxx之后在点击上图这个按钮即可将本地代码推送到远程代码托管站
4,用GitHub Desktop创建、切换分支
点击Current branch即可在下拉框中创建新的分支或者切换到一个已有的分支
5,用GitHub Desktop合并分支
点击Branch选项卡,选择Merge into current branch,然后在弹出框中选择需要合并到Current branch的分支即可合并
六、代码版本冲突
多人合作过程中代码冲突是比较常见的问题,我们只需要搞清楚代码在什么情况下会冲突以及怎么解决这个冲突:
1,代码在什么情况下会发生冲突
push代码到远程代码托管站的时候,如果同一个文件被他人修改且已经push到了远程代码仓库;merge不同分支的时候,如果同一个文件出现修改等都会提示代码冲突。
2,如何解决冲突
出现代码冲突的时候先运行git pull命令,这时冲突的代码会呈现在本地(如上图所示),然后手动修改代码,重新执行git add . 和git commit -m “注释”、再git push就可以了。
以上这些内容就是Git版本管理的常用操作,熟悉这些基本可以从SVN快速切换到用Git进行代码的版本控制。
扫描以下二维码,研发管理从此高效、轻便、可靠