Git 管理篇章

Git 介绍
Git

  • 开源免费的分布式版本控制系统(DVCS)
  • 最新版本2.1.3(截止2014/11/04) download here

Git的主要特点

  • 支持离线工作,多点同步
  • 速度快
  • 使用40位哈希值标示版本号
  • 本地库、缓冲区、中心库三层结构
  • 轻量级的分支和标签
  • 主要基于命令行,难上手
  • 占用空间大

Git术语

本地库、缓冲区、中心库

  • 本地库:中心库的完整镜像(.git目录)
  • 缓冲区:用于存放和整理待提交改动的空间,支持选择性提交(.git/index)
  • 中心库:代码托管服务器管理下的git库
  • commit-id
    • 40位的哈希值,全球唯一的标示一次提交的完整镜像,相当于一个快照
    • 如:b40046cf6704caa21aff88873276a1321c6e5c1c,实际取开头7-8位就OK
  • HEAD
    • 指代当前checkout状态的commit,后续commit都基于它完成,类似链表
  • refs
    • 分支管理的命名空间,如:refs/heads/*, refs/for/refs/heads/*, refs/tags/*

Gti常用命令

  • Help:查看帮助
  • Clone:克隆服务器上的代码库到本地
    • git clone url:tools/repo.git 服务器project路径可通过web查询
  • Add:添加文件到缓冲区,待提交状态
    • 所有新增修改文件;-u 所有修改删除文件; -A 所有新增修改删除文件
  • Commit:本地提交
    • -m 编辑注释; -s 添加用户签名信息; --amend 修改上次提交
  • Status:查看本地库状态
    • 可以看到当前所在分支,文件新增修改状态等各种信息,有事没事status一下是个好习惯
  • Branch:查看、建立、删除分支
    • git branch :查看本地分支,-r 远程分支,-a 所有分支
    • git branch 新分支名基准分支/标签/commit :新建一条本地分支
    • git branch –D 分支名:删除本地分支
  • Checkout:检出分支
    • git checkout 分支名:检出到指定分支
    • git checkout -b 新分支名老分支名:新建并检出分支
  • Log:查看修改log
    • --oneline:单行显示;-数字:显示最近几条记录;
    • -- 文件名:查看指定文件的修改记录;
    • -p 显示代码变动;--stat:显示文件变动概要(文件名,修改行数等)
  • Diff:查看详细修改内容
    • -- 文件名:查看指定文件的修改记录;

Git进阶命令- 远程协作

  • Fetch和Pull:获取服务器更新
    • Fetch可以把服务器上的全部更新存在本地库中,不会影响当前目录中的代码;
    • Pull命令不仅包含fetch的功能,同时会将修改合入当前目录;
    • git pull –rebase:采用rebase方式将更新合入本地代码(推荐)
  • Push:将本地改动推送入库
    • git push origin本地分支名:refs/for/远程分支名
  • Reset和Revert:两种回退方式
    • 原则:Gerrit merge之前用reset,merge之后用revert
    • git reset commit-id --hard :回退到指定commit,不留任何痕迹
    • git revert commit-id -s :回退一次提交,并自动生成一个相反的patch,需审核入库
    • 才能生效,类似gerrit上的revert按钮功能

Git进阶命令- 清理合并

  • Clean和Checkout:清理本地工作目录
    • git clean -fd :删除所有未跟踪的文件和目录,清理临时文件利器
    • git checkout -- 文件名:把一个文件回退到原始未修改的状态
  • Cherry-pick:单个/批量合入修改
    • git cherry-pick -s -x sha1:拣选指定提交并合入当前分支
    • -s:添加用户签名信息
    • -x:添加原始commit sha1信息,用于追溯
  • Format-patch和apply(am):补丁生成和应用
    • git format-path commit-id^..commit-id : 自动生成patch,如0001-Add-LeTV_X60_20130901_030001.xml.patch
    • git apply patch-name :应用patch
    • git format-patch + git apply = 离线版cherry-pick
    • git am patch-name:另一种打patch的方式,可以自动复用commit message

 

posted @ 2019-04-17 22:46  闫世成  阅读(108)  评论(0编辑  收藏  举报