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。

常用图形界面客户端

  • SourceTree:轻量、免费,支持 Git 和 Mercurial。下载地址
  • GitHub Desktop:为 GitHub 设计的客户端。下载地址

常用命令

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 的工作原理

核心概念

  1. 工作区(Working Directory):工作目录里除 .git 外的所有内容。
  2. 版本库(Repository).git 目录,包括所有版本信息。
  3. 暂缓区(Stage / Index):暂存提交前的更改。
  4. 分支(Branch):Git 自动创建的第一个分支是 master
  5. HEAD 指针:指向当前分支。

git addgit commit 的原理

  • git add:将工作区的更改或新建文件添加到暂缓区。
  • git commit:将暂缓区的所有内容提交到当前分支。

六、远程仓库

多人团队开发

多人团队开发时,通常需要一个远程仓库来共享代码。

常见远程仓库托管途径

  1. 自己搭建 Git 服务器:费时费力。
  2. 在 GitHub 上托管:公开项目免费,私有项目收费,使用广泛。
  3. 在 OSChina 上托管:免费,国内访问速度快(推荐)。

七、搭建 GitHub 远程仓库

配置 SSH Key

  1. 注册 GitHub 账号GitHub
  2. 生成 SSH Key
    $ ssh-keygen -t rsa -C "你的邮箱地址"
    
    一路按 Enter 键。
  3. 上传 SSH Key 到 GitHub
    • 文件路径:~/.ssh/id_rsa.pub
    • 内容查看:cat ~/.ssh/id_rsa.pub
  4. 添加仓库
    • 点击 "Add a repository"
    • 拷贝仓库地址,用于本地克隆。

注意事项

若要删除仓库,也能在 GitHub 网站上方便地进行删除操作。

八、搭建 OSChina 远程仓库

创建仓库

  1. 注册 OSChina 账号OSChina
  2. 创建项目并设置仓库地址
  3. 添加项目组成员及权限
    • 设置 Git 的邮箱和用户名。
    $ git config --global user.email "你的邮箱"
    $ git config --global user.name "你的用户名"
    

结论

无论是命令行操作还是图形界面客户端,Git 强大的功能和灵活的操作将大大提升开发效率和代码管理质量。

posted @ 2015-08-30 15:50  Mr.陳  阅读(676)  评论(0编辑  收藏  举报