iOS - Git 代码版本管理
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 代码版本管理的更多相关文章
- 实验一 GIT 代码版本管理
实验一 GIT 代码版本管理 实验目的: 1)了解分布式分布式版本控制系统的核心机理: 2) 熟练掌握git的基本指令和分支管理指令: 实验内容: 1)安装git 2)初始配置git ,git ...
- 实验一 GIT 代码版本管理
实验一 GIT 代码版本管理 实验目的: 1)了解分布式分布式版本控制系统的核心机理: 2)熟练掌握git的基本指令和分支管理指令: 实验内容: 1)安装git 2)初始配置git ,git ini ...
- 实验一Git代码版本管理
GIT代码版本管理 实验目的: 1)了解分布式分布式版本控制系统的核心机理: 2) 熟练掌握git的基本指令和分支管理指令: 实验内容: 1)安装git 2)初始配置git ,git init git ...
- 实验一  GIT 代码版本管理
实验一 GIT 代码版本管理 实验目的: 1)了解分布式分布式版本控制系统的核心机理: 2) 熟练掌握git的基本指令和分支管理指令: 实验内容: 1)安装git 2)初始配置git ,git ...
- 软件工程实验一 Git代码版本管理
实验一 GIT 代码版本管理 一.实验目的: 1)了解分布式分布式版本控制系统的核心机理: 2)熟练掌握git的基本指令和分支管理指令: 二.实验内容: 1)安装git: 2)初始配置git ,gi ...
- 实验1 GIT代码版本管理
(一)实验目的: 1)了解分布式分布式版本控制系统的核心机理: 2) 熟练掌握git的基本指令和分支管理指令: (二)实验内容: 1)安装git 2)初始配置git ,git init git sta ...
- 实验一 git代码版本管理
实验目的 1. 了解分布式系统版本管理的核心机理. 2. 熟练掌握 git 的基本指令和分支管理指令. 实验内容 1. 安装 git.2. 初始化配置 git,git init ,git status ...
- 软工 实验一 Git代码版本管理
实验目的: 1)了解分布式版本控制系统的核心机理: 2) 熟练掌握git的基本指令和分支管理指令: 实验内容: 1)安装git 2)初始配置git ,git init git status指令 3 ...
- GIT代码版本管理
一.实验目的 1.了解分布式版本控制系统的核心机理: 2.熟练掌握git的基本指令和分支管理指令: 二.实验内容 1.安装git: 2.初始配置git,git init git status指令: 3 ...
随机推荐
- linux命令学习(1):grep 命令
Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全局正则表达 ...
- Java 隐藏和覆盖
我们知道,在JAVA中,子类可以继承父类,如果子类声明的方法与父类有重名的情况怎么办,大伙儿都知道要是重写,但是实际上这又分为两种情况,就是方法和变量在继承时的覆盖和隐藏问题,这些概念性的东西看似无聊 ...
- android中自定义的dialog中的EditText无法弹出输入法解决方案
1.解决无法弹出输入法: 在show()方法调用之前,用dialog.setView(new EditText(context))添加一个空的EditText,由于是自定义的AlertDialog,有 ...
- php实现数字格式化,数字每三位加逗号的功能函数
原地址:http://www.jb51.net/article/73781.htm php实现数字格式化,数字每三位加逗号的功能函数,具体代码如下: ? 1 2 3 4 5 6 7 8 9 10 11 ...
- 错误: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;刚开始 ...
- IE localhost 不能解析
新建的项目 在虚拟机里试了,虚拟机的IE可以解析.本机的360.谷歌都可以解析 只有IE不可以,我把IE11卸载了换成IE8也不行.再换回IE11还是不行 在网上找了很多方法 最后 看到有一个人 ...
- Linux:Ubuntu14.04离线安装scala(在线安装)
参考Scala安装:http://www.lupaworld.com/thread-970271-1-1.html 以下命令安装默认scala版本 sudo apt-get install scala ...
- ios -- 教你如何轻松学习Swift语法(一)
目前随着公司开发模式的变更,swift也显得越发重要,相对来说,swift语言更加简洁,严谨.但对于我来说,感觉swift细节的处理很繁琐,可能是还没适应的缘故吧.基本每写一句代码,都要对变量的数据类 ...
- Count Primes ----质数判断
质数的判断 埃拉托斯特尼筛法: 算法的过程如下图所示: 我们从2开始遍历到根号n,先找到第一个质数2,然后将其所有的倍数全部标记出来,然后到下一个质数3,标记其所有倍数,依次类推,直到根号n,此时数组 ...
- Ubuntu文件操作命令
1.工具栏放下面或者左边的命令 gsettings set com.canonical.Unity.Launcher launcher-position Left gsettings set com. ...