git 使用

git 使用

字数2987 阅读44 评论0 喜欢1

前言:

1.文中的"$"不纳入命令行中,只做标记用

2.文中会介绍常用的命令行操作方式和xcode界面化操作方式介绍git

3.以下均个人理解整理,如果有错还请指出

4.如果想了解SVN版本控制的朋友,请移步SVN使用

git工作原理

工作区(Working Directory):仓库文件夹里除.git目录以外的内容

版本库(Repository):.git目录,用于存储记录版本信息

暂缓区(stage):也叫暂存区

分支(master):.git自动创建的第一个分支

HEAD指针:用于指向当前分支

git add和git commit原理

git add:把文件修改或者新添加文件添加到暂缓区(暂存区)

git commit:把暂缓区(暂存区)中的所有内容提交到当前分支

git大概运作流程.gif

什么是分支?

git可以创建无数个分支,且在创建一个git仓库的的同时会自动创建第一个分支

分支的作用:举个例子 —> 一个已经上架的项目,发现有重要Bug,为了不影响主分支的开发进度,一般会开个分支出来专门修复Bug用,等到Bug修复后,再与主分支进行合并操作

HEAD头指针运作原理

HEAD指针就是为了在各个分支间进行切换,我们开发哪个分支,它就会指向哪个分支

git中HEAD原理.gif

git初始化和访问配置(命令行方式)

初始化一个本地版本库

$ git init

设置用户名和邮箱

$ git config user.name "用户名"

$ git config user.email "xxxxxx@qq.com"

设置全局用户名和邮箱(优先级较高,如果同时设置,优先使用全局)

$ git config --global user.name "用户名"

$ git config --global user.email "xxxxxx@qq.com"

git仓库项目初始化操作

在git工作区(同级目录和同级目录的子目录)中创建一个文件 main.m

$ touch main.m

查看文件状态(查看文件是否被管理)

$ git status

说明:

1.如果文件的颜色为红色,说明该文件并没有被添加到git的暂缓区中

2.如果文件颜色为绿色,说明该文件已经被添加到git的暂缓区中

添加文件到暂缓区中,查看文件状态

$ git add main.m

提交到本地版本库中

$ git commit -m "创建了main.m文件" main.m

说明:

1.可以直接在后面跟上文件,表示把该文件提交到本地版本库(暂缓区-->版本库)

2.不跟任何文件名称,表示把当前所有暂缓区中的内容都提交到版本库中

修改文件,重新提交更改到本地版本库(git中如果修改了文件,需要重新将文件添加到暂缓区中才能提交)

$ git add main.m

$ git commit -m "修改了main文件" main.m

注意:在git中和svn不一样的地方在于 —— 不管是创建文件还是修改文件都需要添加到暂缓区中然后再提交

git好用的功能 —— 起别名

我们来给status起别名 st

基本方式:(只能在当前文件夹内的git工作区内使用)

$ git config alias.st "status"

这样以后要查询文件状态就可以直接使用 $ git st 就可以了

高级方式:(只能在当前文件夹内的git工作区内使用)

$ git commit -m "注释" --> $ git config alias.ci "git commit -m"

这样以后要提交文件就可以直接使用$ git ci "注释"

全局别名:(设置一次,电脑中所有的地方都可以使用)

$ git config --global alias.st "status"

git删除文件

先创建一个新的文件

$ touch test.m

将文件提交到暂缓区中

$ git add test.m

提交删除操作到本地版本库

$ git commit -m "删除了test.m"文件

删除test.m文件

$ git rm test.m

查看git版本信息

查看git历史版本信息

基础方式:

$ git log

高级方式:(可查看版本回退操作)

$ git reflog

因为git是分布式版本控制,有多个git本地版本库,为了使版本号之间不互相冲突,所以git版本号是通过SHA1加密得到的密文。

git分布式版本控制示意图.png

版本回退操作

情况一:修改了本地版本库文件,但还未提交

$ git reset --hard HEAD

情况二:修改了本地版本库文件,且已经提交

回退到上一个版本

方法一: $ git reset --hard HEAD^ // 一个“^”号表示一个版本

方法二: $ git reset --hard HEAD~1 // ~号后面表示回退几个版本(如10就是回退10个版本)

回退到指定版本

$ git reflog // 查看回退版本信息

$ git reset --hard 版本号(5位)

创建共享版本库并初始化项目

创建共享版本库方式

自己搭建服务器,自己在服务器上配置(复杂)

在U旁上创建共享版本库

把共享版本库创建到文件夹中

托管到github、oschina网站

创建共享版本库步骤

初始化一个空的git共享版本库(和本地版本库不同的是,共享版本库不会生成.git文件夹)

$ git init --bare

注:怎么查看使用的版本库是共享版本库还是本地版本库,我们可以打开git 中的config配置文件查看里面的“bare”字段,如果现实为true表示为共享版本库,反之不是。

管理者连接仓库并下载仓库到本地

$ git clone 共享版本库路径

初识化项目

在初始化项目前,我们需要先忽略一些不必要的文件

创建一个忽略文件.gitignore夹

$ cd git工作区路径

$ touch .gitignore

到github上搜索gitignore并拷贝Objective-OC文件中的内容到我自己创建的忽略文件内保存(文件中里面包含了我们需要忽略的文件配置)

添加并提交忽略文件到本地版本库

$git add .gitignore

$ git commit -m "新建.gitignore忽略文件" .gitignore

创建我们的XCode工程

项目保存路径选择我们本地的版本库(这是下面的git选项就会变灰不可点击,这是正常的,因为我们当前的目录下就有了git仓库)

提交到本地版本库:创建完成后点击XCode上面的Source Control --> Commit --> 添加注释 --> 提交

提交到远程版本库(共享版本库):Source Control --> Push --> 选择远程版本库 --> Push

XCode使用git(添加第三方框架)

开发中我们或多或少会使用到第三方框架,而我们将框架拖入工程的时候会发现git无法识别的情况,这个原因是因为我们拖入的是整个文件夹,如果我们直接拖入的文件不是包含在文件夹下,那么就可以识别

git中第三方框架(静态库)的处理方式

方式一:直接创建和框架相对应的文件夹,然后将框架文件夹内的文件拖入到工程中

方式二:直接右击需要添加的文件 --> source control --> add

方式三:点击需要添加文件所属的文件夹 --> Source Control --> Add "xxxx"

方式四(命令行):

$ cd 文件所在路径

$ git add .

XCode回退操作

在XCode中,我们要进行回退操作很简单:Source Control --> Discard All Changes(取消所有的更改)就可以了

XCode多人开发冲突解决

在多人开发中,很容易出现版本之间的冲突问题,一般我们都是先提交代码到本地仓库,然后一段时间提交一次到远程版本库中,这段时间可能别的开发者已经提交过文件,并且修改了和你同一文件的同一行,那么此时要提交就会报错

处理方式:

Source Control --> Pull --> 选择修改样式 —-> 确定

Source Control --> push --> 提交

创建新成员的共享版本库

有时候开发过程中会出现新的团队成员,而考虑到新成员和老成员使用git方式不一样或者不熟悉,为了保证代码的安全性,会新建一个专门给新成员的共享版本库,以供观察

创建新成员共享版本库(步骤)

在远程共享版本库中新建一个新成员文件夹

打开远程共享版本库

$ cd 远程共享版本库中新成员文件夹的路径

初始化新的共享版本库

$ git init --bare

为确保拷贝到新成员共享版本库中的工程为最新版,操作之前先pull一次工程

Source Control --> 鼠标移至工程分支选项 --> 选择弹出菜单中的Configure ... --> 在弹出窗口中选择 --> Remotes(远程) --> 点击左下角"+" --> Add Remote... --> name:分支标记 Address:需要添加的仓库地址 --> Done --> Source Control --> Push --> 选择新成员分支 --> push

到此,新成员拿到仓库地址

$ cd 本地仓库路径

下载远程仓库中的工程

$ git clone 远程仓库路径

如果要检查新成员的工作成果,那么也需要下载新人共享版本库的工程

先在本地创建一个存储目录

然后打开该目录

$ cd 本地存储目录路径

下载工程

$ git clone 新人共享版本库的路径

查看提交日志

Source Control --> History...

在日志中可以点击对应日志中右边的 show 查看修改的情况

将工程托管到github或osChina平台

github篇:

使用github有个比较不好的地方 -- 要想免费必须开源,如果不开源只能付费使用

肯定要有账号(步骤就不演示了)

创建远程git版本库

点击右上角 “+” 号 --> New repository

repository name(一般为项目名称) --> Description(项目描述) --> 开源选择“Public”(免费)不开源选择"Private"(收费,7美元/1个月) --> 选择是否生成README说明文档 --> 忽略文件选择(选择Objective-OC)--> 选择协议(一般选择 Apache License 2.0协议)--> 创建

连接远程版本库配置

打开XCode --> XCode --> Preferences --> Accounts --> 左下角 “+” --> Add Repository... --> Address:远程版本库的HTTPS地址 Type:管理工具类型 Authentication:认证方式 User Name:用户名 Password:密码 --> Add

连接远程版本库

Source Control --> Chack Out --> 在弹出的窗口中找到我们需要的版本库并选择 --> Next --> 在弹出窗口中选择需要存储的位置

创建工程:将项目添加到版本库的目录下 --> Source Control --> Commit --> 提交

将本地版本库的工程提交到远程版本库:Source Control --> Push --> 提交

oschina篇:这边就不写了,因为oschina可以看成是github的中文版,排版和操作都差不多,但是他比较好的一点就是全免费,而且服务器在国内,速度比较稳定且快,所以推荐使用。

删除代码仓库

登录github --> 找到仓库 --> Settings --> 最下面有个Delete this repository -- 输入需要删除的仓库名 -- 提交

将旧项目添加到git版本库中

创建远程仓库

配置远程仓库并连接

使用命令行将文件加入到管理列表中

$ git add .

提交代码到本地版本库

$ git commit -m "注释"

提交代码到远程版本库

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

推荐阅读更多精彩内容

  • 声明:这篇文章来源于廖雪峰老师的官方网站,我仅仅是作为学习之用 Git简介 Git是什么? Git是目前世界上最先...
    横渡阅读 3,920评论 3 27
  • 原文地址主要用到的命令: git config user.name 设置用户名 git config user....
    AFinalStone阅读 439评论 0 2
  • 这是我在学习Git的过程中所做的读书笔记的相关总结,希望能对刚刚接触Git或Github的小伙伴们带来一点点帮助,...
    sonack阅读 2,447评论 9 56
  • 亲爱的女儿: 此刻,你应该正走在去学校的路上,或者已经跟你的姚妈妈一起讨论问题了。今天是五一,你本可以在家...
    心若红莲阅读 897评论 0 3
  • 热共同投入就要放空间
    nicole1202阅读 180评论 0 1