T Git的简单使用 - CocoaChina_让移动开发更简单

首页 >iOS开发

Git的简单使用

2017-08-07 11:14 编辑: 四门三连 分类:iOS开发 来源:Clark_new

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

3373235-c7043b14f2d0d81b.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 .

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

3373235-3bdc64953d112a6d.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

提示以下内容

On branch master
nothing to commit, working directory clean

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

3373235-a8c220cd63a3d198.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 得以改善

搜索CocoaChina微信公众号:CocoaChina
微信扫一扫
订阅每日移动开发及APP推广热点资讯
公众号:
CocoaChina
我要投稿   收藏文章
上一篇:UITextField的简单封装
下一篇:组件化远程私有库解决方案(cocoapods基于git 、svn)----高级版
我来说两句
发表评论
您还没有登录!请登录注册
所有评论(0

综合评论

相关帖子

sina weixin mail 回到顶部