Git基础知识总结

Git简介

  • 分布式版本控制系统
  • 直接记录快照而非差异比较
  • 几乎所有的操作都在本地
  • Git 保证完整性
    图片引自BUNOOB.COM
    在这里插入图片描述

工作区、暂存区和版本库

  • 工作区:就是你在电脑里能看到的目录
  • 暂存区:英文叫stage, 或index。一般存放在 “.git目录下” 下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
  • 版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。
    在这里插入图片描述

Git 工作流程

  • 克隆 Git 资源作为工作目录。
  • 在克隆的资源上添加或修改文件。
  • 如果其他人修改了,你可以更新资源。
  • 在提交前查看修改。
  • 提交修改。
  • 在修改完成后,如果发现错误,可以撤回提交并再次修改并提交。
    如下工作流程图引自BUNOOB.COM:
    在这里插入图片描述

与工作流相关的GIT命令

安装
  • Windows
    • https://git-scm.com/download/win
  • macOS
    • 安装 Xcode Command Line Tools
    • 安装homebrew,通过homebrew安装Git
  • Linux
    • sudo apt-get install git
  • 初步配置
    • 配置用户信息
      • $ git config --global user.name userName
      • $ git config --global user.email userName@iflytek.com
操作版本库
  • 创建新仓库
    • git init
  • 克隆已有仓库
    • git clone
  • 添加到远程仓库
    • git remote add origin git@github.com:michaelliao/learngit.git
  • 查看远程引用的信息
    • git remote -v
    • git remote show origin
  • 从远程仓库获取更新
    • git fetch
      • 使用 clone 命令克隆一个仓库,命令会自动将其添加为远程仓库并默认以 “origin” 为简写
      • git fetch origin:抓取clone之后、或最近一次fetch之后被push到远程的更新
      • git fetch命令只下载数据到本地仓库,不会自动合并到工作目录
    • git pull
      • 已经设置为跟踪远程分支,git pull相当于git fetch + git merge
      • git clone命令自动将本地的master分支设置为跟踪远程master分支
  • 向远程推送更新
    • git push
      • git push origin master:将 master 分支推送到 origin 服务器
      • 当你有所克隆服务器的写入权限,并且之前没有人推送过时,这条命令才能生效
      • 如果有人在你之前推送,你的push请求会被拒绝,必须先拉取以及合并之后才能推送
基本操作
  • 基本快照
    • 暂存文件:git add [] [–] …
      • 对未跟踪进行跟踪、并加入暂存区
      • 将已跟踪文件的修改加入暂存区
    • 提交修改:git commit [] [–] …
      • git commit
        • 默认会启用 shell 的环境变量 $EDITOR 所指定的软件
      • git commit -m ‘…’
        • 将提交信息与命令放在同一行
      • git commit --amend
        • 重新提交,覆盖上次提交的信息
        • 在push到远程后不要使用这个命令!
    • git status -s
      • 看在你上次提交之后是否有修改
    • 比较差异
    • git diff [–options] [–] [ …]
      • 此命令比较的是工作目录中当前文件和暂存区域快照之间的差异
    • git diff [–options] --cached [] [–] [ …]
      • 查看已暂存的将要添加到下次提交里的内容和之间的差异
      • 一般情况下想要查看相对于最近一次提交的修改,省略,默认为HEAD
      • –staged与–cached相同
    • 取消暂存的文件
      • git reset HEAD
版本回退管理
  • 回退指定版本
    • 通过git log查看历次的
    • 通过git reset --hard 重置
  • 查看本地仓库中分支或其他引用信息的历史:git reflog
    • 可用于找回已被回退覆盖的
  • 快捷用法
    • HEAD:当前版本
    • HEAD^:上一个版本
    • HEAD^^:上上一个版本
    • HEAD~10:往上10个版本
分支管理
  • 列出、创建或删除分支
    • git branch:列出分支
    • git branch :创建分支
    • git branch -d :删除分支
  • 切换分支
    • git checkout
    • 本质是将HEAD指针指向所指向的提交对象
  • 切换并创建分支
    • git checkout -b
  • 合并分支
    • git merge [] […]
      • 找到最近的父节点,在当前分支重演之后所做的修改
      • 如果成功,自动记录一个新的提交
    • git merge --abort
      • 合并出现冲突后,可以中断合并过程并尝试回退到合并之前的状态
    • 在合并之前,一定要把本地的修改全部提交!
  • 储藏工作区
    • git stash
      • 想要切换分支,但是还不想要提交之前的工作,使用这个命令储藏修改
      • 保存所有本地修改后,作为一个stash项加入stash list,将工作目录回复到HEAD提交
    • git stash list:列出已储藏内容
    • git stash apply []:取出储藏的修改并应用于工作目录,默认取出最近的
    • git stash drop []:从stash list移除,默认移除最近的
    • git stash pop []:相当于git apply + git drop
  • 分支策略
    • master分支应该非常稳定,仅仅用来发布新版本
    • dev分支干活都在dev分支上,到某个版本在把dev分支合并到master上
    • 每个人都有自己的分支,时不时地往dev分支上合并
      在这里插入图片描述
标签管理
  • 创建标签
    • git tag :用于新建一个标签,默认为HEAD,也可以指定一个commit id
    • git tag -a -m “blablabla…”:可以指定标签信息
    • git tag:可以查看所有标签
  • 操作标签
    • git push origin :可以推送一个本地标签
    • git push origin --tags:可以推送全部未推送过的本地标签
    • git tag -d :可以删除一个本地标签
    • git push origin :refs/tags/:可以删除一个远程标签
设置别名
  • 设置别名
    • git config --global alias.co checkout
    • git config --global alias.br branch
    • git config --global alias.ci commit
    • git config --global alias.st status
    • git config --global alias.unstage ‘reset HEAD --’
    • git config --global alias.last ‘log -1 HEAD’
    • git config --global alias.lg “log --color --graph --pretty=format:’%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset’ --abbrev-commit”
  • 其他设置
    • git config --global core.quotepath false(不会对0x80以上的字符进行quote。中文显示正常)

图形化GIT客户端

  • 总览
    • https://git-scm.com/downloads/guis
  • SourceTree下载
    • https://www.sourcetreeapp.com/
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值