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. linux命令学习(1):grep 命令

    Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全局正则表达 ...

  2. Java 隐藏和覆盖

    我们知道,在JAVA中,子类可以继承父类,如果子类声明的方法与父类有重名的情况怎么办,大伙儿都知道要是重写,但是实际上这又分为两种情况,就是方法和变量在继承时的覆盖和隐藏问题,这些概念性的东西看似无聊 ...

  3. android中自定义的dialog中的EditText无法弹出输入法解决方案

    1.解决无法弹出输入法: 在show()方法调用之前,用dialog.setView(new EditText(context))添加一个空的EditText,由于是自定义的AlertDialog,有 ...

  4. php实现数字格式化,数字每三位加逗号的功能函数

    原地址:http://www.jb51.net/article/73781.htm php实现数字格式化,数字每三位加逗号的功能函数,具体代码如下: ? 1 2 3 4 5 6 7 8 9 10 11 ...

  5. 错误:Value '0000-00-00 00:00:00' can not be represented as java.sql.Timestamp;的解决

    问题: 代码中查询MySQL的结果集时报错,提示Value '0000-00-00 00:00:00' can not be represented as java.sql.Timestamp;刚开始 ...

  6. IE localhost 不能解析

    新建的项目  在虚拟机里试了,虚拟机的IE可以解析.本机的360.谷歌都可以解析 只有IE不可以,我把IE11卸载了换成IE8也不行.再换回IE11还是不行 在网上找了很多方法 最后  看到有一个人 ...

  7. Linux:Ubuntu14.04离线安装scala(在线安装)

    参考Scala安装:http://www.lupaworld.com/thread-970271-1-1.html 以下命令安装默认scala版本 sudo apt-get install scala ...

  8. ios -- 教你如何轻松学习Swift语法(一)

    目前随着公司开发模式的变更,swift也显得越发重要,相对来说,swift语言更加简洁,严谨.但对于我来说,感觉swift细节的处理很繁琐,可能是还没适应的缘故吧.基本每写一句代码,都要对变量的数据类 ...

  9. Count Primes ----质数判断

    质数的判断 埃拉托斯特尼筛法: 算法的过程如下图所示: 我们从2开始遍历到根号n,先找到第一个质数2,然后将其所有的倍数全部标记出来,然后到下一个质数3,标记其所有倍数,依次类推,直到根号n,此时数组 ...

  10. Ubuntu文件操作命令

    1.工具栏放下面或者左边的命令 gsettings set com.canonical.Unity.Launcher launcher-position Left gsettings set com. ...