专栏首页腾讯DevOps写给UI开发的Git入门指南
原创

写给UI开发的Git入门指南

腾讯工蜂Git:基于Git的企业级协作开发解决方案,腾讯未来研发关键系统

https://code.tencent.com

腾讯工蜂用户:熊申平

Git是作为一款最先进的分布式版本控制系统在公司内外越来越流行,目前WeGame中也有部分项目陆续切换到Git,本文根据自己在项目中的使用经验整理而成,期望能帮助团队小伙伴在windows开发环境下从SVN快速切换到Git。

一、Git比SVN好在哪里?

1,Git代码更为安全。在SVN集中式版本控制下,项目成员的代码都要提交到一台中央服务器,如果这台服务器出现问题,大家就不能正常工作甚至代码丢失。

SVN集中式版本控制

而在Git分布式版本控制下,代码的版本控制是建立在本地机器上的,每个项目成员本地都保存了一份完整的版本库,理论上各成员之间是不需要依赖中央服务器进行版本控制的,但实际工作中还是有一台充当中央服务器的电脑方便成员间交换各自的修改。

Git分布式版本控制

2,Git效率更高。用Git进行版本控制,提交代码等一系列操作都是在本地机器上进行的,提交代码、分支切换、版本回退等操作不依赖于网络,所以操作效率更高

3,Git分支管理更加方便。能在一个代码仓库里面进行多个分支的任意切换,一个git checkout 命令就能搞定,切换之后本地代码立即自动更新到对应的分支,而不需要像SVN另外拉取分支代码目录

二、Git环境搭建

1,Git傻瓜式安装。直接去git官网下载安装文件,一步步根据提示选择默认操作即可,目前的安装文件基本都自动配好环境变量,无需手动配置:

https://git scm.com/

安装完成之后,打开命令行工具CMD运行git --version命令,出现git版本号即表示安装成功

git --version

2,生成SSH公钥并在代码托管站上进行配置。SSH公钥帮助我们在本地机器跟远程代码托管站之间建立完全链接,并且避免以后向远程代码托管站推送(push)代码的时候重复输入账号密码。

widnows下需要用Git Bash这个工具生成SSH公钥,Git安装过程中会自动安装Git Bash,在桌面上鼠标右键选择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公钥并复制下来:

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 push

四、Git分支管理

在实际项目中,为了降低风险,我们通常会根据项目版本迭代情况建立分支进行开发,在每个分支上完成特定功能的开发,然后将分支代码合并到主干。

分支开发

我们的项目的代码一般都会放在代码托管站上,所以这里我们还是从代码托管站上建立分支开始。

1,在远程代码托管站上建立分支。点击创建分支的按钮,输入分支名字即可创建,一般默认会创建基于主干的分支

创建分支

2,拉取远程分支到本地。建立分支之后,运行git pull就能吧远程代码托管站中的项目分支同步到本地

git pull

3,切换到分支。通过git pull命令虽然将远程分支拉取到了本地,但本地需要在分支上进行开发还需要运行git checkout xxxx切换到分支,这样在本地代码上所做的修改才是在分支上进行的修改

git checkout xxx(分支名)

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进行代码的版本控制。


扫描以下二维码,研发管理从此高效、轻便、可靠

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 从 SVN 到 Git

    本文从 Git 与 SVN 的对比入手,介绍如何通过 Git-SVN 开始使用 Git,并总结平时工作高频率使用到的 Git 常用命令。

    腾讯工蜂
  • Git简介

    Git是一个开源的分布式的版本控制系统。它可以追踪任何变化的文件,支持完整的工作流程,来保证数据的完整性和处理事务的高效性。

    腾讯工蜂
  • Git的艺术—分支管理

    Git的开发者—— Linus Benedict Torvalds,22岁就创建了Linux系统,发展到2005年的时候,用了仅两周的时间写了一个分布式版本控制...

    腾讯工蜂
  • Git相关介绍

    但是集中式的版本控制,有个严重的缺陷。就是中央服务器的单点故障。如果服务宕机一个小时,在这期间,没有任何人可以在正在工作的版本上很好的合作或者去保存某一个版本...

    用户5521279
  • 关于 Git 的那些事

    本篇文章主要讲了下 Git 的一些基本的概念以及如果使用 git log 的命令来进行一段时间段的代码量统计,其中还可以统计不同作者修改的代码量,其中关于 gi...

    姚姝娜
  • 《Pro Git》翻译文1.6 - 获取帮助与总结

    这些命令很棒,因为你随时随地可以使用而无需联网。如果你觉得手册或者本书的内容还不够用,你可以尝试在Freenode IRC服务器(irc.freenode.ne...

    项勇
  • 国内银行投贷联动业务全面解读:政策、模式和案例分析1、投贷联动的定义 2、投贷联动的模式3、投贷联动的试点地区、机构和组织架构设置4、投贷联动案例分析

    2016年4月21日,银监会、科技部与中国人民银行联合出台了《关于支持银行业金融机构加大创新力度开展科创企业投贷联动试点的指导意见》,意见中将投贷联动的定义界定...

    辉哥
  • 【JavaWeb】104:邮箱激活业务

    当然发送邮件的技术挺多的,我这边使用的是apache提供的commons-mail。

    刘小爱
  • 那些总是写“烂代码”的同学,强烈推荐你使用这款 IDEA 插件!

    idea集成sonar的代码检查,实现可以在提交代码前就检查你的代码,而不是将代码提交之后,之后再去检查。

    Java团长
  • 揭秘黑客是如何在60秒内偷车的

    简介 要知道街上最多的不是美女帅哥,而是私家车。从电影《危情谍战》中我获得一丝灵感,接下来我们就谈谈如何与远程设备之间进行通信,从而打开车锁,然后启动一部汽车...

    FB客服

扫码关注云+社区

领取腾讯云代金券