举例简单介绍GitHub进行代码版本控制及分支的使用

一、新建远程代码库并向代码库里面添加工程

创建代码库.png

编辑代码库信息.png

1、克隆代码库到本地

首先,在GitHub上创建一个代码库,为代码库起一个名字,代码库类型设置为公有的(私有代码库需要花钱,7刀一个月),然后点击创建代码库。
拷贝链接,


生成代码库.png

打开终端,在终端输入:

$ cd Desktop/                                               //cd <路径>,映射到本地目录
$ git clone https://github.com/DecadentOrMagic/test.git     //git clone <地址>,拷贝内容到本地
克隆到本地.png

点击Enter,


克隆到本地成功.png

当终端如上图所示,说明我们已经把代码库克隆到了本地。

2、更新本地仓库

test.png

复制HelloWorld工程到test目录.png

在test目录中,创建新的工程HelloWorld或者复制现成的HelloWorld工程到test目录,在终端输入:

$ cd /Users/xueyao/Desktop/test     // 映射到test文件夹下(cd 然后把test文件夹拖到终端就行了)
$ git add .                         // git add . 用于添加文件到本地代码库缓存
$ git commit -m"第一次上传代码"       // git commit用于提交缓存中的修改
终端输入.png

修改完本地代码库.png

终端如上图所示,说明本地仓库更新完成。

3、更新远程仓库

使用

$ git push         // git push 命令用于推送本地代码库到远程服务器代码库
gitpush.png

上传GitHub成功.png

当终端如上图所示,表示远程服务器代码库修改完毕。


远程仓库更新后的界面.png

当我们刷新一下GitHub界面,我们会发现,GitHub上已经显示了我们的这次更新。

二、使用分支管理代码

1、创建分支

创建分支.png

创建分支时,在终端输入

$ git branch testing     // 创建分支时,使用git branch<分支名>
$ git branch             // 查看分支情况

输入完这两行命令,按Enter后,*号的分支是当前分支,master是git默认创建的分支,testing是我们刚刚创建的分支。

2、切换分支

切换分支.png

在终端输入:

$ git checkout testing     // git checkout <分支名>,切换分支

当终端如上图所示,说明已经切换到了testing分支。


验证分支切换.png

终端输入:

$ git branch

我们可以发现,分支确实已经切换到了testing。

3、合并分支

我们现在终端输入

$ git checkout master

把分支切回到master,


输入HelloWorld.png

打开工程HelloWorld,在ViewController.m的viewDidLoad方法里输出Hello World,然后在终端输入

$ git add .
$ git commit -m"第一次修改master分支"

更新本地代码库。


第一次修改master分支.png

如上图所示,说明master分支的本地代码库已经更新完毕。
终端输入

$ git checkout testing

切换到testing分支,
打开工程HelloWorld,我们会发现工程变成了一个空白工程。


输出世界你好.png

在ViewController.m的viewDidLoad方法的同一个位置输出世界你好。
注意(错误命令):


警告.png

在终端输入
$ git checkout master

我们发现终端给出一个警告,这是因为我们在修改完testing分支之后,没有更新本地代码库就切换分支了,这是不允许的。要记住,我们每次修改完分支之后,一定要及时更新本地代码库才能切换分支。
所以,正确的命令应该是


第一次修改testing分支.png
$ git add .
$ git commit -m"第一次修改testing分支"
$ git checkout master

我们看到,这样写就可以再次切换到master分支了。
在两个分支的工作结束后,我们就要把testing分支合并到master上,合并分支用到了git merge命令。
在终端输入

$ git merge testing
产生冲突.png

终端输出如上图所示,这是因为我们两个分支产生了冲突。


工程冲突.png

再次打开HelloWorld这个工程,<<<<<<< HEAD ... >>>>>>> 表示其中的内容有冲突,此时就需要我们手工解决,究竟想保留哪部分代码,就看你自己的需求了。如果你想把两个分支的代码全部保留,那就把<<<<<<< HEAD / ======= / >>>>>>> testing 这些都去掉,然后再次在终端进行本地代码库更新。终端输入

$ git add .
$ git commit -m"第一次合并分支"
合并分支后更新本地库.png

终端输出如上图所示,说明本地代码库已经更新,下一步就可以push到远程仓库了。
在终端输入

$ git push
远程仓库更新

终端如上图所示,说明我们已经更新了远程仓库。
到GitHub上查看一下,


GitHub代码库更新

可以看到,GitHub上已经更行完成。

4.删除分支

当我们在testing分支上的工作结束,我们就可以把这个分支删除了,但是要注意,要删除的分支不能是当前所在的分支。
因为我们现在处在master分支上,我们直接在终端输入

$ git branch -d testing
删除分支命令

如上图所示,testing分支已经删除(如果不确定,可以输入 $ git branch 查看一下分支状态)。
如果是这种情况,我们处于testing分支,而且编辑了代码,此时要删除testing分支该怎么操作呢?
首先,我们要在终端输入 $ git add . / $ git commit -m"" 更新本地代码库,然后切换到master分支,而删除的时候,我们如果使用了 $ git branch -d testing 命令,终端会输出信息提醒我们,删除的时候要用

$ git branch -D testing

来进行删除,其中 -D表示强制删除。

三、如何在日常工作中使用GitHub进行管理代码

关于这个问题,请参见 https://segmentfault.com/q/1010000000181403 这个帖子二楼的回复,再结合分支的使用,基本就能解决平时的代码管理需求了。

写到这儿也差不多了,如果文中出现什么错误或遗漏,还请各位不吝赐教,我会第一时间进行更改。

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

推荐阅读更多精彩内容