1、Git

  • Git 是用 C 语言开发的分布版本控制系统。版本控制系统可以保留一个文件集合的历史记录,并能回滚文件集合到另一个状态(历史记录状态)。另一个状态可以是不同的文件,也可以是不同的文件内容。举个例子,你可以将文件集合转换到两天之前的状态,或者你可以在生产代码和实验性质的代码之间进行切换。文件集合往往被称作是 “源代码”。在一个分布版本控制系统中,每个人都有一份完整的源代码(包括源代码所有的历史记录信息),而且可以对这个本地的数据进行操作。分布版本控制系统不需要一个集中式的代码仓库。

  • 当你对本地的源代码进行了修改,你可以标注他们跟下一个版本相关(将他们加到 index 中),然后提交到仓库中来(commit)。Git 保存了所有的版本信息,所以你可以转换你的源代码到任何的历史版本。你可以对本地的仓库进行代码的提交,然后与其他的仓库进行同步。你可以使用 Git 来进行仓库的克隆(clone)操作,完整的复制一个已有的仓库。仓库的所有者可以通过 push 操作(推送变更到别处的仓库)或者 Pull 操作(从别处的仓库拉取变更)来同步变更。

  • Git 支持分支功能(branch)。如果你想开发一个新的产品功能,你可以建立一个分支,对这个分支的进行修改,而不至于会影响到主支上的代码。

  • 1)Git 术语:

    术语 定义
    Repository:仓库 一个仓库包括了所有的版本信息、所有的分支和标记信息.在 Git 中仓库的每份拷贝都是完整的。仓库让你可以从中取得你的工作副本。
    Branches:分支 一个分支意味着一个独立的、拥有自己历史信息的代码线(code line)。可以从已有的代码中生成一个新的分支,这个分支与剩余的分支完全独立。默认的分支往往是叫 master。用户可以选择一个分支,选择一个分支叫做 checkout。
    Tags:标记 一个标记指的是某个分支某个特定时间点的状态。通过标记,可以很方便的切换到标记时的状态。
    Commit:提交 提交代码后,仓库会创建一个新的版本。这个版本可以在后续被重新获得。每次提交都包括作者和提交者,作者和提交者可以是不同的人。
    URL URL 用来标识一个仓库的位置。
    Revision:修订 用来表示代码的一个版本状态。Git 通过用 SHA1 hash 算法表示的 id 来标识不同的版本。每一个 SHA1 id 都是 160 位长,16 进制标识的字符串。最新的版本可以通过 HEAD 来获取。之前的版本可以通过 "HEAD~1" 来获取,以此类推。
  • 2)Git 常用命令:

    • 全局配置

          # 告诉 git 你是谁
          $ git config --global user.name "姓名"
      
          # 告诉 git 怎么联系你
          $ git config --global user.email "xxx@qq.com"
      
          # 查看配置信息
          $ git config -l
    • 初始化代码仓库

          # 初始化代码库
          $ git init
      
          # 初始化空白的代码仓库
          $ git init --bare            // 协同开发使用
      
          # 将所有变化添加到暂存区
          $ git add .
      
          # 将暂存区内容提交至代码库
          $ git commit -m "注释内容"
      
          # 修改最后一次提交的注释
          $ git commit --amend
    • 查看信息

          # 查看所有文件状态
          $ git status
      
          # 查看指定文件的状态
          $ git status 文件名
      
          # 查看版本库日志
          $ git log                   // 按字母 q 可以退出(关闭中文输入法)
      
          # 查看指定文件的修订记录
          $ git log 文件名
    • 版本回撤

          # 回撤到上一个版本
          $ git reset --hard HEAD^
      
          # 回撤到上上一个版本
          $ git reset --hard HEAD^^
      
          # 切换到任意版本
          $ git reset --hard 版本号(前6位)
      
          # 撤销某一个文件当前的修改
          $ git checkout 文件名
      
          # 查看分支引用记录
          $ git reflog              // 能够查阅所有的版本号
    • 本地分支操作

          # 查看本地分支
          $ git branch
      
          # 创建本地分支
          $ git branch <name>       // 不会自动切换分支
      
          # 创建新分支并立即切换到新分支
          $ git checkout -b <name>
      
          # 切换分支
          $ git checkout <name>
      
          # 合并分支
          $ git merge <name>
      
          # 删除已经合并过的分支
          $ git branch -d <name>     // 没有合并的分支不能删除,如果要强行删除分支,可以使用 -D 选项
      
          # 删除没有与远程分支对应的本地分支
          $ git fetch -p
      
          # 重命名本地分支
          $ git branch -m <oldName> <newName>
    • 远程操作

          # 将远程代码库克隆到本地
          $ git clone url
      
          # 将本地修改内容推送到远程代码仓库
          $ git push
      
          # 将远程代码库的变化更新到本地
          $ git pull
      
          # 查看远程分支
          $ git branch -r
      
          $ git branch -a
      
          # 创建远程分支
          $ git push origin <name>                   // 本质上是将本地的分支 push 到远程
      
          # 删除远程分支
          $ git push origin --delete <branchName>
      
          $ git push origin :<branchName>            // 推送一个空分支到远程分支,其实就相当于删除远程分支
      
          # 获取远程 tag
          $ git fetch origin tag <tagname>
      
          # 把本地 tag 推送到远程
          $ git push --tags
      
          # 删除远端 tag
          $ git push origin --delete tag <tagName>
      
          $ git tag -d <tagname>
          $ git push origin :refs/tags/<tagname>     // 推送一个空 tag 到远程 tag
  • 3)Git 常见问题:

    • UserInterfaceState.xcuserstate 文件频繁更新

          1> 退出 Xcdoe,打开终端(Terminal),进入到你的项目目录下。
      
          2> 在终端键入  git rm --cached <YourProjectName>.xcodeproj/project.xcworkspace/xcuserdata/<YourUsername>.xcuserdatad/UserInterfaceState.xcuserstate
      
              终端返回:rm 'QFormDataExample.xcodeproj/project.xcworkspace/xcuserdata/JHQ0228.xcuserdatad/UserInterfaceState.xcuserstate'
      
          3> 提交更新,在终端键入  git commit -m "Removed file that shouldn't be tracked"
      
              终端返回:<master 734ff0a> Removed file that shouldn't be tracked
                       1 file changed, 0 insertions(+), 0 deletions(-)
                       delete mode 100644 QFormDataExample.xcodeproj/project.xcworkspace/xcuserdata/JHQ0228.xcuserdatad/UserInterfaceState.xcuserstate
      
          4> 在 .gitignore 文件中加入如下几行,或者在 GitHub Desktop 中右击 UserInterfaceState.xcuserstate 更新,选择 Ignore all .xcuserstate files
      
              *.xcuserstate
              project.xcworkspace
              xcuserdata
              UserInterfaceState.xcuserstate
              project.xcworkspace/
              xcuserdata/
              UserInterface.xcuserstate
      
          5> 提交更新,重新打开 Xcode commit, push。

2、Git 桌面化管理工具

  • GitHub Desktop is a seamless way to contribute to projects on GitHub and GitHub Enterprise.

  • Available for Mac and Windows.

  • 下载地址:

iOS - Git 代码版本管理的更多相关文章

  1. 实验一 GIT 代码版本管理

    实验一  GIT 代码版本管理 实验目的: 1)了解分布式分布式版本控制系统的核心机理: 2)   熟练掌握git的基本指令和分支管理指令: 实验内容: 1)安装git 2)初始配置git ,git ...

  2. 实验一  GIT 代码版本管理

    实验一  GIT 代码版本管理 实验目的: 1)了解分布式分布式版本控制系统的核心机理: 2)熟练掌握git的基本指令和分支管理指令: 实验内容: 1)安装git 2)初始配置git ,git ini ...

  3. 实验一Git代码版本管理

    GIT代码版本管理 实验目的: 1)了解分布式分布式版本控制系统的核心机理: 2) 熟练掌握git的基本指令和分支管理指令: 实验内容: 1)安装git 2)初始配置git ,git init git ...

  4. 实验一&#160;&#160;GIT 代码版本管理

    实验一  GIT 代码版本管理 实验目的: 1)了解分布式分布式版本控制系统的核心机理: 2)   熟练掌握git的基本指令和分支管理指令: 实验内容: 1)安装git 2)初始配置git ,git ...

  5. 软件工程实验一 Git代码版本管理

    实验一  GIT 代码版本管理 一.实验目的: 1)了解分布式分布式版本控制系统的核心机理: 2)熟练掌握git的基本指令和分支管理指令: 二.实验内容: 1)安装git: 2)初始配置git ,gi ...

  6. 实验1 GIT代码版本管理

    (一)实验目的: 1)了解分布式分布式版本控制系统的核心机理: 2) 熟练掌握git的基本指令和分支管理指令: (二)实验内容: 1)安装git 2)初始配置git ,git init git sta ...

  7. 实验一 git代码版本管理

    实验目的 1. 了解分布式系统版本管理的核心机理. 2. 熟练掌握 git 的基本指令和分支管理指令. 实验内容 1. 安装 git.2. 初始化配置 git,git init ,git status ...

  8. 软工 实验一 Git代码版本管理

    实验目的: 1)了解分布式版本控制系统的核心机理: 2)   熟练掌握git的基本指令和分支管理指令: 实验内容: 1)安装git 2)初始配置git ,git init git status指令 3 ...

  9. GIT代码版本管理

    一.实验目的 1.了解分布式版本控制系统的核心机理: 2.熟练掌握git的基本指令和分支管理指令: 二.实验内容 1.安装git: 2.初始配置git,git init git status指令: 3 ...

随机推荐

  1. css公共样式

    /* ==================================================================== @ set browser style ======== ...

  2. Java-马士兵设计模式学习笔记-代理模式-聚合与继承方式比较

    一.概述 1.目标:要在Tank的move()方法做时间代理及日志代理(可以设想以后还要增加很多代理处理),且代理间的顺序可活更换 2.思路: (1)聚合:代理类聚合了被代理类,且代理类及被代理类都实 ...

  3. iOS开发UI篇—Quartz2D使用(绘制基本图形)

    iOS开发UI篇—Quartz2D使用(绘制基本图形) 一.简单说明 图形上下文(Graphics Context):是一个CGContextRef类型的数据 图形上下文的作用:保存绘图信息.绘图状态 ...

  4. java中 File文件常用操作方法的汇总

    一.IO流: 1.全称为:Input Output---------输入输出流. 输入:将文件读到内存中. 输出:将文件从内存中输出到其他地方. 2.IO技术的作用: 主要是解决设备与设备之间的数据传 ...

  5. Java并发控制:ReentrantLock Condition使用详解

    生产者-消费者(producer-consumer)问题,也称作有界缓冲区(bounded-buffer)问题,两个进程共享一个公共的固定大小的缓冲区.其中一个是生产者,用于将消息放入缓冲区:另外一个 ...

  6. SQL Server 导入 MDF LDF文件

    EXEC sp_attach_db @dbname = 'OA', @filename1 = 'C:\OA.mdf', @filename2 = 'C:\OA_log.ldf'

  7. Java Servlet(十):JSTL核心标签库

    JSTL全名称:JaveServer Pages Standard Tag Library.JSTL是由JCP(Java Community Process)所定制的标准规范,它主要提供给Java W ...

  8. 20145320 《Java程序设计》第1周学习总结

    20145320 <Java程序设计>第1周学习总结 教材学习内容总结 第一章 Java最早是Sun公司的项目Green Project中编写Star7应用程序的程序语言,1995年5月2 ...

  9. c# winForm使用Aspose.Cells读取CSV文件中文乱码问题

    不废话直接上代码 主要注意是 红色代码部分 Aspose.Cells.TxtLoadOptions lo = new TxtLoadOptions();                      lo ...

  10. 在学Go语言

    首发:个人博客,更新&纠错&回复 开始学点儿Go语言,这语言据说在国内比在国外火,社区上褒贬不一,不过“小马过河”嘛,总要先自己试试再来下结论. 环境准备: 1.在Golang中国下载 ...