iOS开发基础50-git(一)
一、Git 简介
什么是 Git?
Git 是一款开源的分布式版本控制工具,以速度、简单和流行性著称。在分布式版本控制工具中,Git 是最快、最简单、最流行的选择。
Git 的起源
作者是 Linux 之父——Linus Benedict Torvalds。Git 最初是为了辅助 Linux 内核的开发和管理源代码而开发的。
Git 的现状
- 国外应用广泛:在国外,Git 非常普及,几乎所有现代开发团队和开源项目都在使用。
- 国内逐渐普及:虽然国内的普及度较低,但越来越多的公司和开源项目正在逐渐转向 Git。
常见的版本控制工具
- CVS:最早的开源、免费的集中式版本控制工具,但由于设计问题,容易造成文件提交不完整或版本库损坏。
- SVN:修正了 CVS 的稳定性问题,是目前使用最广泛的集中式版本控制工具。
- ClearCase:收费的集中式版本控制工具,体积庞大且运行缓慢,通常用于财力雄厚的大型公司。
- VSS:微软的集中式版本控制工具,集成在 Visual Studio 中。
二、分布式版本控制和集中式版本控制
集中式版本控制
集中式版本控制系统(如 SVN)需要一个中央服务器来存放所有的版本控制信息。客户端从中央服务器检出代码,进行编辑修改后,再提交回服务器。
分布式版本控制
分布式版本控制系统(如 Git)每个客户端不仅保存代码工作副本,还保存整个代码仓库的完整历史。这意味着开发者可以在本地进行提交、查看历史记录、创建分支等操作,无需时时刻刻依赖网络和中央服务器。
三、Git 和 SVN 的对比
速度
Git 的速度远远超越 SVN,尤其在处理较大项目时表现尤为突出。
结构
- SVN:集中式管理。
- Git:分布式管理。
分支管理
- SVN:分支管理操作较为笨拙。
- Git:轻松创建、管理无限个分支。
联网需求
- SVN:必须联网才能正常工作。
- Git:支持本地版本控制,无需依赖网络。
元数据管理
- SVN:旧版本的 SVN 会在每个目录放置一个
.svn
目录。 - Git:仅在项目根目录放置一个
.git
目录。
工作流程对比
SVN 的工作流程
- 本地工作目录与服务器上的代码仓库同步。
- 通过
commit
提交更改到服务器。
Git 的工作流程
- 开发者在本地仓库中进行提交。
- 每个开发者的机器上都有完整的版本库复制副本。
- 可以本地进行提交、分支管理等操作,然后将更改推送到远程服务器。
四、如何使用 Git
使用方法
与 SVN 类似,可以通过命令行或图形界面客户端来使用 Git。
常用图形界面客户端
常用命令
1. 获取帮助
git help # 查看 Git 帮助手册
git help <subcommand> # 查看特定子命令的帮助
2. 配置 Git
git config --global user.name "你的用户名" # 配置用户名
git config --global user.email "你的邮箱" # 配置邮箱
git config --global -l # 查看配置列表
git config --global -e # 编辑配置(使用 vim)
3. 查看文件状态
git status # 查看当前路径所有文件的状态
git status <文件名> # 查看特定文件的状态
4. 查看日志
git log # 查看当前路径所有文件的修改日志
git log <文件名> # 查看特定文件的修改日志
git log --pretty=oneline # 用一行方式显示简单日志信息
git log -N # 查看最近的 N 次修改 (N 是一个整数)
5. 查看文件改动
git diff # 查看当前路径所有文件的最新改动
git diff <文件名> # 查看特定文件的最新改动
6. 初始化仓库
git init # 在当前路径初始化一个空的本地仓库
git init <路径> # 在指定路径初始化一个空的本地仓库
7. 添加文件到暂存区
git add <文件名> # 保存某个文件到暂存区
git add . # 保存当前路径的所有文件到暂存区
8. 提交文件到分支
git commit -m "备注" # 提交暂缓区的所有文件到当前分支
git commit -m "备注" <文件名> # 提交特定文件到当前分支
9. 版本回退
git reset --hard HEAD^ # 回退到上一个版本
git reset --hard HEAD^^ # 回退到上上个版本
git reset --hard HEAD~N # 回退到上 N 个版本 (N 是一个整数)
git reset --hard <版本号> # 回退到特定版本(版本号前7位即可)
10. 查看操作记录
git reflog # 查看指令使用记录(包含所有版本号的记录)
11. 删除文件
git rm <文件名> # 删除文件并进行commit操作
12. 克隆仓库
git clone <仓库的URL> # 克隆远程仓库到当前路径
git clone <仓库的URL> <路径> # 克隆远程仓库到指定路径
13. 从远程仓库获取最新信息
git pull # 从远程仓库拉取最新信息到本地仓库
14. 推送信息到远程仓库
git push # 将本地的仓库信息推送到远程仓库
五、Git 的工作原理
核心概念
- 工作区(Working Directory):工作目录里除
.git
外的所有内容。 - 版本库(Repository):
.git
目录,包括所有版本信息。 - 暂缓区(Stage / Index):暂存提交前的更改。
- 分支(Branch):Git 自动创建的第一个分支是
master
。 - HEAD 指针:指向当前分支。
git add
和 git commit
的原理
git add
:将工作区的更改或新建文件添加到暂缓区。git commit
:将暂缓区的所有内容提交到当前分支。
六、远程仓库
多人团队开发
多人团队开发时,通常需要一个远程仓库来共享代码。
常见远程仓库托管途径
- 自己搭建 Git 服务器:费时费力。
- 在 GitHub 上托管:公开项目免费,私有项目收费,使用广泛。
- 在 OSChina 上托管:免费,国内访问速度快(推荐)。
七、搭建 GitHub 远程仓库
配置 SSH Key
- 注册 GitHub 账号:GitHub
- 生成 SSH Key:
一路按 Enter 键。$ ssh-keygen -t rsa -C "你的邮箱地址"
- 上传 SSH Key 到 GitHub:
- 文件路径:
~/.ssh/id_rsa.pub
- 内容查看:
cat ~/.ssh/id_rsa.pub
- 文件路径:
- 添加仓库:
- 点击 "Add a repository"
- 拷贝仓库地址,用于本地克隆。
注意事项
若要删除仓库,也能在 GitHub 网站上方便地进行删除操作。
八、搭建 OSChina 远程仓库
创建仓库
- 注册 OSChina 账号:OSChina
- 创建项目并设置仓库地址。
- 添加项目组成员及权限:
- 设置 Git 的邮箱和用户名。
$ git config --global user.email "你的邮箱" $ git config --global user.name "你的用户名"
结论
无论是命令行操作还是图形界面客户端,Git 强大的功能和灵活的操作将大大提升开发效率和代码管理质量。
将来的你会感谢今天如此努力的你!
版权声明:本文为博主原创文章,未经博主允许不得转载。