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. Redis主从在线互相切换

    由于某些原因,我们可能需要将redis master更换机器,我们可以停机进行更换,但是那样可能影响到用户体验.本文简要操作进行不停机迁移. 系统环境 CentOS 6.3 x64redis-serv ...

  2. js中eval() 方法的使用以及一些特殊的使用方式

    1.eval方法只能在非严格模式中进行使用,在use strict中是不允许使用这个方法的. 2.eval函数接收一个参数s,如果s不是字符串,则直接返回s.否则执行s语句.如果s语句执行结果是一个值 ...

  3. 为什么要 MySQL 迁移到 Maria DB

    在Oracle收购了SUN公司之后, MySQL很不幸的落在了Oracle的手中,MySQL与Oracle DB存在竞争关系,很可能导致Oracle公司影响MySQL的开发与开放.MySQL之父Wid ...

  4. JQuery兼容IE6问题汇总(不断更新)

    兼容IE6真是苦逼的差事,无奈中... 逗号的问题:IE6中要去掉最后的逗号 var o={ id:1, Name:"abc", //这里的逗号一定要去掉 } HTML的结构,由于 ...

  5. sql server 中删除表中数据truncate和delete的区别(转载自.net学习网)

    我们都知道truncate table可以用来删除整个表的内容,它与delete后面不跟where条件的效果是一样.但除此之外,我们还清楚它们之间有其它的区别吗?本章我们将一起讨论truncate与d ...

  6. Java程序员从笨鸟到菜鸟之(五十一)细谈Hibernate(二)开发第一个hibernate基本详解

    在上篇博客中,我们介绍了<hibernate基本概念和体系结构>,也对hibernate框架有了一个初步的了解,本文我将向大家简单介绍Hibernate的核心API调用库,并讲解一下它的基 ...

  7. 解决SVN不显示状态图标

    打开注册表,找到"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlay ...

  8. ubuntu15.04 安装搜狗输入法

    首先:打开 系统设置->软件和更新,添加以下源, deb http://archive.ubuntukylin.com:10006/ubuntukylin trusty main 然后 sudo ...

  9. 多列布局——column-count

    column-count属性主要用来给元素指定想要的列数和允许的最大列数.其语法规则: column-count:auto | <integer> 取值说明: 属性值 属性值说明 auto ...

  10. 批处理命令——choice

    [1]choice命令简介 使用此命令可以提示用户输入一个选择项,根据用户输入的选择项再决定执行具体的过程. 使用时应该加/c:参数,c: 后应写提示可输入的字符或数字,之间无空格.冒号是可选项. 使 ...