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 .
将当前目录下所有修改过的文件(新增的/修改的)添加到暂存区
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
一旦提交后,如果没有再对工作区做任何修改,那么工作区就是“干净”的
修改文件
输入以下命令,用 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 得以改善