Git的简单使用

什么是 Git?

----Git 是目前世界上最先进的分布式版本控制系统

Git 的诞生

作者是 Linux 之父:Linus Benedict Torvalds

当初开发 Git 仅仅是为了辅助 Linux 内核的开发(管理源代码)

git 开发时间表

git 的产生是 Linux Torvals 在无奈被逼的情况下创造的,我看了一下时间历程:

2005 年 4 月3 日开始开发 git

2005 年 4 月 6 日项目发布

2005 年 4 月 7 日 Git 开始作为自身的版本控制工具

2005 年 4 月 18 日发生第一个多分支合并

2005 年 4 月 29 日 Git 的性能达到 Linux 预期

2005年 7 月 26 日 Linux 功成身退,将 Git 维护权交给 Git 另一个主要贡献者 Junio C Hamano,直到现在

牛是怎么定义的呢?大家可以体会一下

Git 迅速成为最流行的分布式版本控制系统,尤其是 2008 年,GitHub 网站上线了,它为开源项目免费提供 Git 存储,无数开源项目开始迁移至 GitHub,包括 jQuery,PHP,Ruby 等等

版本仓库

概念

版本库,又名版本仓库,英文名repository

这个目录里面的所有文件都可以被 Git 管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”

版本库的注意事项

没事千万不要手动修改这个目录里面的文件,不然改乱了,就把 Git 仓库给破坏了

不要已经有版本库管理的目录中,再建立版本库,否则 git 就不知道如何管理了

创建版本库

建立需要用 git 管理的目录

进入终端

$cd项目目录

$ git init

通过git init命令把这个目录变成 Git 可以管理的目录

注意:不要再在这个目录的子目录中建立.git的目录

GIT 的常用终端命令

步骤

新建目录

新建001-第一个git目录

打开终端,输入以下命令

$cd[空格] [在 Finder 选中目录拖拽到此处,然后回车]

现在在终端中操作的目录就是刚刚创建的目录了

建立版本仓库(git init)

在终端输入以下命令

$ git init

可以在终端中看到建立了一个.git的目录

这个目录就是 git 的版本库目录

001-第一个git和该目录的所有子目录中的文件都归这个版本库管理

将该目录拖拽到 sourceTree 中观察文件变化

新建文件(git status查看状态)

在终端输入以下命令,创建一个文件

$ touch hello.m

在 SourceTree 中观察文件变化

在终端中输入以下命令

$ git status

提示以下内容

On branch master

>在 master 分支上Initial commitUntracked files:

> 没有跟踪的文件 

(use"git add ..."to includeinwhat will be committed)   

hello.m

nothing added to commit but untracked files present (use"git add"to track)

使用 `git add` 跟踪文件

添加到暂存区(git add .)

输入以下命令,将 hello.m 添加到暂存区

$ git add .

将当前目录下所有修改过的文件(新增的/修改的)添加到暂存区

git add并没有直接将修改放到版本库,给程序员一个后悔的机会

在终端中输入以下命令

$ git status

提示以下内容

On branch master

Initial commit

Changes to be committed: 

(use"git rm --cached ..."to unstage) 

  new file:  hello.m

注意观察 srouceTree 中的变化

提交到版本库(git commit .)

输入以下命令,将 所有修改 提交到版本库,并且说明修改原因

$ git commit -m "添加了 hello.m"

在终端中输入以下命令

$ git status

提示以下内容

On branch master

nothing to commit, working directory clean

一旦提交后,如果没有再对工作区做任何修改,那么工作区就是“干净”的

修改文件

输入以下命令,用 Xcode 打开 hello.m

$ open hello.m

在 Xcode 中输入以下内容

#include <stdio.h>

int main() {

    printf("hello git\n");

}

在终端中输入以下命令

$ git status

提示以下内容

On branch master

Changes not staged for commit:

  (use"git add ..."to update what will be committed)

  (use"git checkout -- ..."to discard changes in working directory)

    modified: hello.m

no changes added to commit (use"git add"and/or"git commit -a")

在终端中输入以下命令,将修改添加到暂存区

$ git add .

在终端中输入以下命令

$ git status

提示以下内容

$ git status

On branch master

Changes to be committed:

  (use"git reset HEAD ..."to unstage) 

  modified:  hello.m

在终端中输入以下命令,将修改提交到版本库

$ git commit -m"修改了hello.m"

在终端中输入以下命令

$ git status

提示以下内容

On branch master

nothing to commit, working directory clean

gitignore

操作步骤

在终端输入以下命令,编译hello.m

$ gcc hello.m

在终端编译生成一个a.out的可执行文件,这个文件是不需要提交到版本库的

在终端输入以下命令,创建.gitignore

用 Xcode 打开.gitignore输入

*.out

表示忽略追踪所有以.out结尾的文件

在终端输入以下命令

$ git add .$ git commit -m  "添加 .gitignore 文件"

在日常开发中,以下文件都不需要提交到服务器上保存:

根个人相关的文件,例如:最后打开的文件、断点

第三方框架

提示:

Xcode 默认继承了极少的几个常用 Git 命令,但是不包含对.gitignore文件的生成和管理

是否知道 .gitignore 文件,直接可以判定这个程序员是否有团队开发经验

独立的代码仓库

操作步骤

建立仓库

新建一个目录CZHelloProject.git

进入终端,进入该目录

输入以下命令

$ git init --bare

--bare参数可以建立仅用于交换的独立的代码仓库

建立多人目录

新建张三/经理两个目录,分别演示两个独立的程序员角色

准备经理的目录

在终端中输入以下命令

$cd[经理的目录]$ gitclone[代码仓库目录]$cdCZHelloProject

设置个人信息

# 设置用户名

$ git config user.name经理

# 设置邮箱

$ git config user.emailmanager@qq.com

# 查看设置信息

$ git config -l

按照以上步骤重复张三的目录设置

多人协作

操作步骤

经理创建项目

从gitignore-master复制Objective-C.gitignore到项目目录

在终端中输入以下命令重命名

$ mv Objective-C.gitignore .gitignore

$ git add .

$ git commit -m"添加 gitignore"

$ git status

设置追踪流,只有在本地的版本库才需要设置

$ git branch --unset-upstream

新建HelloGit项目,保存在刚刚创建的目录中

将项目目录拖拽到 SrouceTree 中,并且改名

注意:一定要先添加.gitignore再添加项目文件,否则有些文件默认不会被忽略

张三开始工作

询问经理版本库地址

在终端克隆版本库

$ gitclone[版本库地址]

设置个人信息(仅在一台计算机模拟多人需要)

$ git config user.name 张三

$ git config user.email 张三@qq.com

$ git config-l

冲突以及冲突解决

所谓冲突就是当两个人同时修改了同一个文件的同一行代码,才会产生冲突!

通过fetch可以提前看到是否存在冲突,比直接用 pull 要方便很多

storyboard的冲突很麻烦,所以很多企业不愿意用storyboard

即使使用,也是各司其职

为了避免纯代码创建 UI 的繁琐工作,还有很多公司使用 XIB

在早期版本的 Xcode 中,只要在 Storyboard 中挪动一下位置,storyboard 就会被标记为修改状态,Xcode 7.3 得以改善

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

推荐阅读更多精彩内容

  • 本篇主要讲Git 的一些基础和一些在开发中比较常用的命令。比较适合初学和快速了解Git。 Git文件分类 Git中...
    weiweilong阅读 619评论 0 2
  • 前提: SVN属于集中式管理:需要依赖网络以及“中央管理库”Git属于分布式管理:不需要网络,任何人本地都是一个完...
    Eddiegooo阅读 460评论 2 2
  • 创建一个空目录 ​$ mkdir git​​ ​$ cd git ​​$ pwd 把这个目录初始化为Git可以管理...
    我非起点亦非终点阅读 232评论 0 0
  • 骗你小狗,这是件真实的事情。 每天晨练时,在贺昌烈士陵园的小草坪上,我总能遇见几只小狗在玩耍,嬉戏...
    甲老师阅读 752评论 1 3
  • 3月17日晚,新区市政服务中心对辖区观澜办事处市政道路路灯亮灯情况进行了巡查(巡查人员:王煌淮,黄鑫源)。 ...
    鑫源阅读 827评论 0 0