开发工具之Git工具--版本控制神器(二)

上篇文章我们学习了Git工具的简单介绍,Git仓库的创建以及一部分Git指令的知识。接下来我们继续学习Git相关概念以及指令。上篇文章见:开发工具之Git工具--版本控制神器(一)
这一部分的内容接上一部分的Git指令,为了版式优雅,我就重新以大写数字(一、二)为标题命名了。

一、远程仓库

之所以使用Git远程仓库,一是我们可以完成协作开发,二是我们可以备份我们的代码、分享,开源我们的项目。Git远程服务器有很多种,我们以最常用的Git为例,介绍一下远程仓库。
1. 身份认证
本地Git仓库与远程Git仓库进行通信的时候,往往需要SSH身份验证。

ssh_key.png

查看根目录的.ssh文件夹下是否已经存在 id_rsa和idrsa.pub文件。如果没有,可以使用如下命令成成这两个文件:

ssh-keygen -t rsa -C "email(github上的注册邮箱)"
然后一直回车即可。
id_rsa和id_rsa.pub就是SSH Key的秘钥对。id_rsa是私钥用于验证自己的身份,而id_rsa.pub是公钥用在Git远程服务器上表明自己的身份。
添加SSH Key
以GitHub为例子(本文均以GitHub为例子),如下图:

SSH KEY.png

2. 同步协作
本地Git仓库与远程Git仓库同步,远程仓库作为本地仓库的备份,或与其他开发者协同工作。
其实同步这些操作指令在你新创建一个仓库后,都会有提示,如下图所示:

createNewRep.png

连接与推送代码
git remote add origin 自己的gitHub仓库地址
git push -u origin master
**note: **
origin代表远程仓库,不用修改它。第一条指令是建立连接,第二条指令是推送代码。-u参数使得不但推送了master分支,而且还将本地master分支与远程的master分支关联起来(后续再推送到master分支的时候直接使用“git push“命令语句即可,不用添加-u参数)。

git_push_remote.png

更新代码
通过git pull指令即可拉取最新代码的更新,如果拉取的更新代码与本地没有冲突,则会自动合并。

Clone远程仓库:
这一部分已经在文章开始创建仓库部分提到过,不再重复,指令:
git clone 仓库地址

二、分支管理

试想这么一种场景,应用在迭代更新过程中,肯定是要修复bug和增添新功能的。在增添新功能的开发过程中,我们肯定不能直接使用当前应用主分支master,因为我们使用Git工具目的就是为了完成协作开发,你去使用master分支,那别人就只能去打游戏去了。所以我们提出分支的概念,从主分支中拉取一个copy,进行新功能的开发,开发完毕后,我们只需合并分支即可。

  • 创建分支
    对于开发者的每次commit,Git都会把它们串成一条线,这就是一个分支。通过gitk指令,我们可以查看分支的产生与合并情况。
    master分支.png

使用git checkout -b 分支名称 可以创建一个新的分支
这个命令等价于:1.
git branch 分支名称
2. git checkout 分支名称
note:前面提到过checkout指令,当checkout后面跟分支名称才代表创建一个新的分支,如果跟文件名,代表恢复操作。-b参数指的是自动切换到新创建的分支上。

  • 查看分支

使用 git branch 指令可以查看现有的分支。
当前所处的分支名称前面用*标记。

  • 切换分支

使用 git checkout 分支名称可以切换到指定分支上。
note:当前分支若存在未提交的修改,则Git无法切换分支。可通过git stash指令将修改暂存并恢复到原始版本,然后切换分支。

  • 合并分支
    我们创建新的分支,往往是为了实现某个功能去的。应用最终发布的版本,一般都会从master分支上获取。因此在其他版本上的修改,通常都要重新merge到master分支上来。


    git_merge.png

使用git merge 分支名称可将某分支merge到mater分支上来。
在合并分支的过程中有时会出现代码冲突的问题,这时Git会把冲突的代码都显示在代码中,需要我们自己取舍。
合并分区其实还有一个Rebase指令:git rebase 分支名称;二者的区别在于,后者会合并时间线。可根据实际需要选择哪种合并方式。

  • 删除分支

使用git branch -d 分支名称即可产出一个分支。
注意,当一个分支未合并时Git会提醒你,你可以使用参数“-D”强制删除一个分支。

到这里,你也许会有疑问,Git这么多分支操作,会不会产生很多垃圾文件?其实,Git与SVN不同,Git创建的只是一个指向不同文件或者分支的指针而已,Git实际上只是使用了很少的内存空间来记录这一切。

  • 查看远程分支

使用git remote指令查看远程分支
使用git remote -v指令查看远程分支的详细信息

  • 推送分支

使用git push origin 分支名称推送分支到远程

git_remote_branch.png

三、Tag

Tag可以认为是一个快照,一个记录点,用于记录某个commit点或分支的历史快照。Tag通常打在Master分支上。以保证代码的准确性。这一部分的内容比较简单,下面简单介绍一下指令。

  • 创建Tag

git tag tag名称
这样创建的Tag,默认会记录在最后的提交上。你也可以通过commit id指定要创建Tag的地方,代码如下:
git tag Tag的名字 id(一般7位)
你也可以创建带注释的Tag,如:
git tag -a Tag名称 -m "注释" id;其中-a参数制定了Tag名称 ,-m参数指定了注释。

  • 查看Tag

使用git tag指令可以查看创建过的Tag
使用git show tag名称查看Tag的详细信息

  • 删除Tag

使用git tag -d tag名称删除tag,类似于删除分支。

  • 推送Tag到远程

使用git push origin tag名称推送tag到远程
或者,你可以使用git push origin --tags推送本地所有的tag

  • 删除远程Tag
    想要删除远程tag,你必须先删除本地的tag。你可以使用下面两条指令删除远程tag:
    git tag -d tag名称
    git push origin :refs/tags/tag名称

四、Git图解

希望各位能好好掌握这些区域的操作关系。

git图解.png

五、结语

到此为止,Git工具全部写完了。这一部分内容我查了很多资料,包括博客和书。Git作为一种工具,最好的掌握方式当然是好好使用它。这两篇文章算是做一个笔记吧,也方便日后查看、复习。各位如果有疑问留言即可,我们共同讨论。
前半部分请看这里:开发工具之Git工具--版本控制神器(一)
最后,转载请注明出处http://www.jianshu.com/p/5a4f51932308 ,谢谢。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,425评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,058评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,186评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,848评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,249评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,554评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,830评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,536评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,239评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,505评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,004评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,346评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,999评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,060评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,821评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,574评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,480评论 2 267

推荐阅读更多精彩内容