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. hibernate学习(4)——实体配置详解

    1.实体 编写规则 提供一个无参数 public访问控制符的构造器 提供一个标识属性,映射数据表主键字段,hibernate以id识别,必须有主键 所有属性提供public访问控制符的 set  ge ...

  2. ArGIS Server 服务的更新

    对于普通地图服务更新 [产品版本]:arcgis for server 10.1,10.1 sp1,10.2及以上 [问题分析]: 由于在10.1中地图服务的发布采用的是msd的形式,也就是虽然在Ar ...

  3. javascript 隐性类型转换步骤

    这里说的隐性类型转换,是==引起的转换. 如果存在NaN,一律返回false 再看有没有布尔,有布尔就将布尔转换为数字 接着看有没有字符串, 有三种情况,对方是对象,对象使用toString进行转换: ...

  4. Redis配置文件(redis.conf)说明

    Redis 配置 Redis 的配置文件位于 Redis 安装目录下,文件名为 redis.conf. 你可以通过 CONFIG 命令查看或设置配置项. 语法3> Redis CONFIG 命令 ...

  5. LeetCode Missing Ranges

    原题链接在这里:https://leetcode.com/problems/missing-ranges/ 题目: Given a sorted integer array where the ran ...

  6. LeetCode Zigzag Iterator

    原题链接在这里:https://leetcode.com/problems/zigzag-iterator/ 题目: Given two 1d vectors, implement an iterat ...

  7. zabbix的一些优化参数随笔

    StartDBSyncers=12  如果proxy过多 可以适当加大这个参数 ProxyConfigFrequency=60ProxyDataFrequency=60 这两个参数很重要,一个是ser ...

  8. js购物车计算价格

    <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta nam ...

  9. VS2012+Win7网站发布详细步骤

    VS2012+Win7网站发布详细步骤 本机环境: 本文分三个部分介绍Web项目发布的常规方法,大神级别可以略过,主要是为了方便一些初学者. 第一部分:VS2012把项目发布到文件系统. 第二部分:I ...

  10. DuiLib学习笔记3——颜色探究

    在前面两篇日志已经能使用xml了.今天准备好好的折腾一番,结果在颜色上却掉坑里了. 起初我在ps里取颜色为0104ff 这里01为R,04为G,ff为B 在控件的属性里有这样一个属性bkcolor=& ...