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 的常用终端命令

1502074948997430.jpg

步骤
新建目录
新建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 .

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


1502075070942549.jpg

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

提示以下内容

ch master

nothing to commit, working directory clean

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

1502075165363933.jpg

修改文件
输入以下命令,用 Xcode 打开 hello.m

$ open hello.m

在 Xcode 中输入以下内容


#include 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阅读 199,830评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,992评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,875评论 0 331
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,837评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,734评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,091评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,550评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,217评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,368评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,298评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,350评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,027评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,623评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,706评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,940评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,349评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,936评论 2 341

推荐阅读更多精彩内容

  • 1. 安装 Github 查看是否安装git: $ git config --global user.name "...
    Albert_Sun阅读 13,621评论 9 163
  • 声明:这篇文章来源于廖雪峰老师的官方网站,我仅仅是作为学习之用 Git简介 Git是什么? Git是目前世界上最先...
    横渡阅读 3,941评论 3 27
  • 今日分享的书是《深度模仿》作者井上达彦,分享内容―模仿的三重境界:守、破、离。 八月初回家住了一...
    新葵阅读 209评论 2 4
  • 陈宗楠老师分享了他参加过的一些光学仪器设备及一些设备厂商先进技术的展会。之后讲解了光学装调及相关指标,球差、色差、...
    王集是个好小伙阅读 263评论 0 0
  • 最生僻的API做了下划线以及粗体的标注。百度上查了全是拷贝的同一份代码,而且只有代码没有解释,很是鄙视。
    wzf_taker阅读 1,087评论 1 1