【Git】学习笔记-Git

学习笔记-Git

  • Git-版本控制系统
    • 一. 介绍
    • 二. 工作方式
    • 三. 安装
    • 四. 分支管理模式[^1]
      • TBD(主干开发模式)
      • Git-Flow模式
      • GitHub-Flow模式
      • GitLab-Flow模式
      • 优劣对比
    • 五. 常用命令
      • 5.1 配置
      • 5.2 初始化
      • 5.3 文件操作
        • 5.3.1 查看状态:
        • 5.3.2 文件比较:git diff
        • 5.3.3 从工作区添加至暂存区:git add
        • 5.3.4 从暂存区提交至本地库:git commit
        • 5.3.5 从工作区直接提交至本地库
        • 5.3.6 从本地库推送至远程库:git push
        • 5.3.7 从远程库拉取至工作区:git pull/git fetch
        • 5.3.8 查看日志:git log/git reflog
        • 5.3.9 删除/撤销提交:
        • 5.3.10 回退版本:git reset / git revert
        • 5.3.11 隐藏当前修改:git stash
      • 5.4 分支操作
        • 5.4.1 创建分支
        • 5.4.2 切换分支
        • 5.4.3 删除分支
        • 5.4.4 查看分支
        • 5.4.5 合并分支:merge
        • 5.4.6 与远程仓库交互:
      • 5.5 标签操作
        • 5.5.1 查看标签
        • 5.5.2 打标签
        • 5.5.3 删除标签

Git-版本控制系统

官网地址: https://git-scm.com/

一. 介绍

Git是一个免费、开源的分布式版本控制系统,可以快速高效的处理从小型到大型的各种项目。
Git易于学习,占地面积小,性能快,它具有廉价的本地库,方便的暂存区和多个工作流分支等特性,其性能优于Subversion(SVN)、CVS、Perforce和ClearCase等版本控制工具

二. 工作方式

【Git】学习笔记-Git_第1张图片

三. 安装

注意事项:安装路径最好不要带中文和空格

四. 分支管理模式1

TBD(主干开发模式)

【Git】学习笔记-Git_第2张图片
即所有开发者,仅在一个开发分支(即主干)上进行协作开发的模式,在这种模式下,不允许新建任何长期存在的开发分支,有且仅保留主干分支进行开发协作。

Git-Flow模式

【Git】学习笔记-Git_第3张图片
Git-Flow 是为了解决多个不同特性之间并行开发需要的一种工作方式。当开始一个特性的开发工作的时候,从主干上拉出一个特性分支,所有的关于该特性的开发工作都发生在这个特性分支上,当完成该特性的工作之后,再把特性分支合并回代码主路径上,并准备发布。

Git-Flow 有以下几种分支:

  • feature 分支:开发者进行功能开发的分支。
  • develop 分支:对开发的功能进行集成的分支。
  • release 分支:负责版本发布的分支。
  • hotfix 分支:对线上缺陷进行修改工作的分支。
  • master:保存最新已发布版本基线的分支。

GitHub-Flow模式

【Git】学习笔记-Git_第4张图片

GitLab-Flow模式

【Git】学习笔记-Git_第5张图片

优劣对比

五. 常用命令

5.1 配置

  • 查看系统git配置:git config --system --list
  • 查看当前用户git配置:git config --global --list
  • 查看当前项目git配置:git config --local --list
  • 配置用户名:git config --global user.name 【用户名】
  • 配置邮箱:git config --global user.email 【邮箱地址】
  • SSH免密登录:ssh-keygen -t ras -C【备注】
    • 生成公钥私钥,将公钥信息拷贝粘贴到GitHub个人账号下的SSH and GPG keys菜单吓得SSH Keys中,之后当pull或者push时则不需要每次输入账号密码登录,免去登录操作

5.2 初始化

  • 在当前目录新建本地仓库:git init
  • 在指定目录下新建本地仓库:git init 【项目名称】
  • 克隆远程仓库:git clone 【git地址】
    • 默认为master分支,项目名称为远程仓库最后一个/之后的名称
    • 指定分支:git clone -b 【分支名称/tag名称】 【git地址】
    • 指定项目名称:git clone 【git地址】 【项目名称】

5.3 文件操作

  • 5.3.1 查看状态:
    • 所有文件:git status
    • 指定文件:git status 【file-name】
  • 5.3.2 文件比较:git diff
    • 本地库最新版本与工作区对比:git diff HEAD -- 【文件名】
    • 本地库上一个版本与工作区对比:git diff HEAD^ -- 【文件名】
    • 本地分支和远程分支对比:git diff 【本地分支名称】 origin/【远程分支名称】
    • 已暂存文件和上次提交文件对比:git diff --cached 【文件名】
  • 5.3.3 从工作区添加至暂存区:git add
    • 指定文件:git add 【文件名】【文件名】...
    • 所有新增和修改的文件:git add .
    • 所有修改和删除的文件:git add -u .
    • 所有新增、修改、删除的文件:git add -A .
  • 5.3.4 从暂存区提交至本地库:git commit
    • 提交所有文件:git commit -m 【提交备注】
    • 提交指定文件:git commit 【文件名】【文件名】... -m 【提交备注】
  • 5.3.5 从工作区直接提交至本地库
    • 提交所有文件:git commit -am 【备注】
    • 撤销最后一次提交,并重新提交:git commit --amend
  • 5.3.6 从本地库推送至远程库:git push
    • 推送所有文件:git push
    • 强制提交:git push -f
    • 推送当前本地分支至指定远程分支:git push origin 【远程分支名】
    • 推送指定本地分支至指定远程分支:git push origin 【远程分支名】 【本地分支名】
  • 5.3.7 从远程库拉取至工作区:git pull/git fetch
    • 不自动合并: git fetch【远程分支名】
    • 自动合并:git pull 【远程分支名】
  • 5.3.8 查看日志:git log/git reflog
    • 查看所有commit日志:git log
    • 查看指定条数日志:git log -【条数】
    • 格式化日志输出内容2:git log 【显示参数】=【筛选参数】常用命令:
      • git log --pretty=oneline
    • 在回退版本以后又后悔找不到commit id了可以使用get reflog查看历史
  • 5.3.9 删除/撤销提交:
    • 删除所有未跟踪的文件:git clean -df
      • -d:指包含目录
      • -f:指强制删除
    • 删除暂存区文件:git rm --cached 【文件名】
    • 删除暂存区文件并且删除工作区文件:git rm -rf 【文件名】
  • 5.3.10 回退版本:git reset / git revert
    • 回退上一个版本的所有文件:
      • git reset --hard HEAD^
      • git revert -n HEAD^
    • 回退指定版本所有文件:
      • git reset --hard 【commit id】
      • git revert -n 【commit id】
    • 回退上一个版本的指定文件:git reset HEAD^ 【文件名】
    • 回退指定版本的指定文件:git reset 【commit id】 【文件名】
    • reset 与 revert 对比:
      • reset:有三个版本V1.0,V1.1,V1.2,若从V1.2 reset至V1.0,会将V1.1和V1.2删除,HEAD指针指向V1.0,此时git log无法看到V1.1和V1.2的提交记录,如果想指向V1.2,需要用git reflog查看commit Id
      • revert:有三个版本V1.0,V1.1,V1.2,若从V1.2 revert至V1.1,会将V1.2中的仅属于V1.1的所有的代码全部删除,重新提交覆盖当前V1.2的代码,但是commit id不会变化。
  • 5.3.11 隐藏当前修改:git stash

    如果有未完成或不想提交的代码,当切换分支时需要先隐藏当前修改,否则会带入到其他分支

    • 隐藏修改:git stash
    • 隐藏修改并添加备注:git stash save 【备注】
    • 查看已隐藏的修改列表:git stash list
    • 删除已隐藏的stash
      • 删除最近的:git stash drop
      • 删除指定的stash:git stash drop stash@{1}
      • 删除所有:git stash clear
    • 恢复已隐藏的stash
      • 恢复最近的:git stash pop 会同时删除该stash
      • 恢复指定的stash:git stash apply stash@{1}

5.4 分支操作

  • 5.4.1 创建分支
    • 创建并切换分支:
      • git checkout -b 【新分支名】
      • git switch -c 【新分支名】
    • 创建分支:git branch 【新分支名】
  • 5.4.2 切换分支
    • git checkout【分支名】
    • git switch 【分支名】
    • git reset 【分支名】
  • 5.4.3 删除分支
    • git branch -d 【分支名】
    • 强制删除:git branch -D 【分支名】
  • 5.4.4 查看分支
    • 查看当前分支:git branch
    • 查看本地和远程的所有分支:git branch -a
    • 查看远程所有分支:git branch -r
    • 链接本地分支和远程分支:git branch --set-upstream-to=origin/【远程分支名】 【本地分支名】
  • 5.4.5 合并分支:merge
    • 合并指定分支至当前分支:git merge 【分支名】
    • 撤回上次合并请求:git merge --quit
    • 不使用Fast forward方式合并分支,创建新的commit记录:git merge --no-ff -m 【备注】 【分支名】
    • 默认使用Fast forward方式合并分支
  • 5.4.6 与远程仓库交互:
    • 从远程仓库拉取分支至本地,并在本地新建分支:get checkout -b 【本地分支】 origin/【远程分支】
    • 查看本地缓存的远程分支:git branch -r
    • 将远程的最新数据(包括代码和分支)重新加载到本地:
      可解决远程仓库新建分支后,本地无法拉取新分支问题
      • git fetch origin
      • git remote update origin --prune

5.5 标签操作

  • 5.5.1 查看标签
    • 查看所有: git tag
  • 5.5.2 打标签
    • 当前分支的最新一次提交:git tag 【版本】
    • 当前分支的指定提交记录:git tag 【版本】【commit id】
    • 当前分支的指定提交记录并附带备注:git tag 【版本】 -m 【备注】 【commit id】
  • 5.5.3 删除标签
    • git tag -d 【版本】

  1. 分支模式参考链接:https://blog.csdn.net/howeres/article/details/124927771 ↩︎

  2. git log参数详解:https://blog.csdn.net/weixin_46074961/article/details/126400431 ↩︎

你可能感兴趣的:(Git,git,学习,笔记)