iOS - Git 代码版本管理

简介: 1、GitGit 是用 C 语言开发的分布版本控制系统。版本控制系统可以保留一个文件集合的历史记录,并能回滚文件集合到另一个状态(历史记录状态)。另一个状态可以是不同的文件,也可以是不同的文件内容。

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。
    • 一次提交的文件太大

          提交后提示 fatal: recursion detected in die handler 或者 出现 POST git-receive-pack (chunked)
      
          问题原因:http.postBuffer 默认上限为 1M 所致。
      
          在 git 的配置里将 http.postBuffer 变量改大一些即可,比如将上限设为 500M: 
           git config --global http.postBuffer 524288000 
      
          在哪里执行以上命令呢? 
          打开 git bash 命令行工具。 
          注意要加上 --global。网上很多资料都没加这个参数。不加执行的话会报以下错误的: 
           error:could not lock config file .git/config: no such file or directory.
      
          1> 使用 Git 提交代码
              进入到要提交的代码的目录,里面包含 .git 文件夹,输入指令 git config http.postBuffer 524288000
      
          2> 使用 SourceTreee 提交代码
              如图按照顺序依次点击在最后一步增加
      
              [http] 
                       postBuffer = 524288000
      
          3> 使用 TortoiseGit
              右键 TortoiseGit--settings--Git--Edit systemwide gitconfig--把 postBuffer 的值修改为 524288000

      201707

    • git ssh失效解决办法

          报错信息
           git.exe clone --progress -v "https://git.duapp.com/appiddfged879rf" "F:\bae\yelp" 
      
           Cloning into 'F:\bae\yelp'... 
           fatal: unable to access 'https://git.duapp.com/appiddfged879rf/': SSL certificate problem: unable to get local issuer certificate
      
          最简单的解决方法是执行下面的命令,然后重新执行 git clone 命令:
           git config --global http.sslVerify false

2、Git 桌面化管理工具

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

  • Available for Mac and Windows.

  • 下载地址:
目录
相关文章
|
3月前
|
IDE 网络安全 开发工具
【Azure App Service】Local Git App Service的仓库代码遇见卡住不Clone代码的问题
【Azure App Service】Local Git App Service的仓库代码遇见卡住不Clone代码的问题
【Azure App Service】Local Git App Service的仓库代码遇见卡住不Clone代码的问题
|
3月前
|
开发工具 数据安全/隐私保护 git
记录一次使用git工具拉取coding上代码密码账号错误的经历
这篇文章记录了作者在使用Git工具从Coding平台克隆项目时遇到的账号密码错误问题,并分享了通过清除电脑凭证中错误记录的账号密码来解决这个问题的方法。
记录一次使用git工具拉取coding上代码密码账号错误的经历
|
3月前
|
开发工具 git Python
通过Python脚本git pull 自动重试拉取代码
通过Python脚本git pull 自动重试拉取代码
179 5
|
27天前
|
开发工具 git
git如何修改提交代码时的名字和邮箱?
git如何修改提交代码时的名字和邮箱?
39 4
|
28天前
|
Android开发 Swift iOS开发
探索安卓与iOS开发的差异:从代码到用户体验
【10月更文挑战第5天】在移动应用开发的广阔天地中,安卓和iOS两大平台各占半壁江山。它们在技术架构、开发环境及用户体验上有着根本的不同。本文通过比较这两种平台的开发过程,揭示背后的设计理念和技术选择如何影响最终产品。我们将深入探讨各自平台的代码示例,理解开发者面临的挑战,以及这些差异如何塑造用户的日常体验。
|
30天前
|
Java Linux 开发工具
IDEA中git提交前如何关闭code analysis以及开启格式化代码
【10月更文挑战第12天】本文介绍了在 IntelliJ IDEA 中关闭代码分析和开启代码格式化的步骤。关闭代码分析可通过取消默认启用检查或针对特定规则进行调整实现,同时可通过设置 VCS 静默模式在提交时跳过检查。开启代码格式化则需在 `Settings` 中配置 `Code Style` 规则,并通过创建 Git 钩子实现提交前自动格式化。
|
2月前
|
Shell 网络安全 开发工具
git与gitee结合使用,提交代码,文件到远程仓库
本文介绍了如何将Git与Gitee结合使用来提交代码文件到远程仓库。内容涵盖了Git的安装和环境变量配置、SSH公钥的生成和配置、在Gitee上创建仓库、设置Git的全局用户信息、初始化本地仓库、添加远程仓库地址、提交文件和推送到远程仓库的步骤。此外,还提供了如何克隆远程仓库到本地的命令。
git与gitee结合使用,提交代码,文件到远程仓库
|
25天前
|
JavaScript 前端开发 开发工具
一身反骨的我,用--no-verify绕开了git代码提交限制!
【10月更文挑战第7天】一身反骨的我,用--no-verify绕开了git代码提交限制!
80 0
|
3月前
|
Shell 开发工具 git
使用 Shell 代码简化 Git 步骤
【8月更文挑战第23天】本文介绍通过Shell脚本简化Git操作的方法:1) 使用`gitc &quot;提交信息&quot;`可一键完成代码提交与推送至远程仓库;2) 执行`gitpull`即可从远程仓库拉取最新代码并合并到当前分支;3) 输入`gitnewbranch 分支名称`快速创建并切换到新分支。将这些自定义函数加入`.bashrc`或`.zshrc`等配置文件后,即可随时调用简化版Git命令。
|
3月前
|
安全 开发工具 git
coding上创建项目、创建代码仓库、将IDEA中的代码提交到coding上的代码仓库、Git的下载、IDEA上配置git
这篇文章是关于如何在IDEA中配置Git、在Coding.net上创建项目和代码仓库,并将IDEA中的代码提交到远程代码仓库的详细教程,涵盖了Git安装、IDEA配置、项目创建、代码提交等步骤。
coding上创建项目、创建代码仓库、将IDEA中的代码提交到coding上的代码仓库、Git的下载、IDEA上配置git