团队协作工具Git

146 阅读5分钟

Git

前置
  • Linux 要会一些常用命令

  • git 目录是隐藏文件 ll -A 查看

    • ll .git/ 查看

    • .git目录仓库说明

      • hooks目录:脚本文件的目录
      • info目录:保存了不希望在.gitignore文件中管理的忽略模式的全局可执行文件
      • logs目录:日志目录
      • object目录:存储所有的数据内容
      • refs目录:存储指向数据分支的提交对象的分支
      • config:文件包含了项目特有的配置选项
      • description:文件仅供GitWeb程序使用
      • Head文件指向当前分支
初始化本地仓库
  • git niit
设置签名信息
  • git config user.name xxxname

  • git config user.email xxxemail

    • 注意:签名信息全部保存在.git/config⽂件中

      这⾥的签名信息和登录远程库的账号和密码没有任何关系,例如码云 GitHub账号

  • 系统级别的设置

    • git config --global user.name xxxname

    • git config --global user.email xxxemail

      • 注意: 系统级别的账户保存在系统⽬录下 例如 win:/c/Users/Administrator

      • 优先级

        • 就近原则:项⽬级别优于系统⽤户级别
        • 如果只有 系统⽤户级别的签名,则采⽤系统⽤户级别
        • 两者必须存在⼀个,都不存在不允许
查看工作区的状态
  • git status

    • 空仓库会提示 On branch master No commits yet
    • 当有新文件会提示:Untracked files
    • 修改过暂未提交的文件:modified xxxname
添加到暂存区
  • git add filename
从暂存区恢复(不提交到暂存区)
  • git rm --cached filename
提交到本地仓库
  • git commit -m "提交说明信息" filename

    • 简要的填写关键的提交信息
查看项目的历史版本
  • git log 遵循后进先出顺序

    • git log --pretty=oneline 漂亮的格式显示
    • git log --oneline 以简约格式显示
可回滚版本步数查看
  • git reflog 显示回滚版本步数,HEAD@{底层回滚到此版本需要的步数}
进退到某个历史记录
  • git reset --hard <索引值>

    • 此命令也可以前进到某个记录
  • git reset --hard HEAD^

    • 仅仅可以后退,⼀个^表示后退⼀步,⽽n个表示后退n步
  • git reset --hard HEAD~n

    • n指定步数,表示后退n步
删除、恢复文件
  • rm filename

    • 注意删除⽂件之前,此⽂件需要已经被提交到本地库,才可恢复,如果尚未提交到本地库,则⽆法恢复
  • git reset --hard 索引值

    • 注意必须提交到本地库之后删除才可以恢复,否则⽆法恢复
对比文件差异
  • git diff filename

    • 将⼯作区中的⽂件与暂存区⽂件进⾏⽐较
    • +表示添加的内容,-表示缺少的内容
  • git diff <索引值> filename

    • ⽐较⼯作区中的⽂件与之历史记录
查看本地仓库的所有远程库
  • git remote -v
创建远程地址库别名(建立连接)
  • git remote add 别名 远程地址
推送本地库到远程库
  • git push 远程库别名 分⽀名

    • 在win系统下如果弹出对话框则填写远程库⽤户名和密码
克隆远程库
  • git clone 远程地址

    • 作用:

      • 可以完整的把远程库下载到本地
      • 创建远程仓库地址别名
      • 初始化本地库
    • A&Q 在本地与远程新建仓库并关联后,初次push可能会遇到问题,原因是因为远程仓库有⼀些⽂件⽽本地没有,通常是在远程建⽴仓库时有⼀些初始化⽂件⽐如

      Readme License 等,并且直接 pull会提示 warning: no common commits,对于此类问题可以采⽤两种

      解决办法

      • . git push -f 强制将本地⽂件推送⾄远程,这样会将远程仓库的已有的⽂件清掉

      • git pull origin master –allow-unrelated-histories 使⽤此命令告诉 git 允许不相关历史

        合并 这样就能把远程⽂件拉取回来。执⾏此命令后会有⼀个提示,要求说明为何要讲两个不相关的分⽀合并,输⼊信息后保存即可。拉取完不同的⽂件之后再执⾏ git push -u origin master 命令即可push成功。

    • A&Q2:如果经理将克隆到本地的库进⾏修改之后,想再次提交到远程库,则需要受到总监的邀请

      • 点击管理
      • 选择所有
      • 添加仓库成员

GIt本地工作区域

Git本地工作区域.png

  • 对于任何⼀个⽂件,对于Git来说,都只可能存放在三种区域:

    • ⼯作区:表示⽂件刚刚新增或者被修改,但是没有被提交保存
    • 暂存区:表示把已新增或者修改的⽂件,放到下次提交时要保存的清单中
    • 本地仓库 :表示⽂件已经被安全的保存在本地仓库了

工作流

释义:
  • 项目过程中多⼈协作,分⽀很多,虽然各⾃在分⽀上互不⼲扰,但最后都要把分⽀合并到⼀起。真实项⽬中涉及到很多问题,例如版本迭代,版本发布,bug 修复等,为了更好的管理代码,需要制定⼀个⼯作流程,这就是我们说的⼯作流(分⽀管理策略)

  • master主干分支

工作流.png - 主要负责管理正在运行的生产环境代码,永远保持与正在运行的生产环境一样

  • hotfix 热修复

    • 主要负责管理生产环境下出现的紧急修复的代码。从主干分支分出,修复后在合并并测试后再合并到主支,并回后视情况删除该分支
  • develop开发分支

    • 主要负责管理正在开发过程中的代码,一般情况下是最新的代码
  • release预发布分支

    • 较大的版本上线前,会从(develop)开发分支会分出(release)预发布分支,进行最后的集成测试。该版本上线后,会合并到主分支,当在生产环境运行一定阶段稳定后,可以视情况删除
  • feature功能分支

    • 为了不影响较短周期的开发工作,把中长期的功能从开发分支(develop)独立出来,再开发完成之后合并到(develop)开发分支

\