当前位置: 首页 > news >正文

【Git】基本概念 + 基操

【Git】基本概念 + 基操

    • 创建 Git 本地仓库
    • 配置 Git(⽤⼾名称 和 e-mail 地址)
    • ⼯作区、暂存区、版本库
    • git add(工作区 -> 暂存区) / git commit (暂存区 -> 版本库)
    • git log ,来查看历史提交记录
    • 对象库 /.git/objects
    • 修改⽂件 (git status / git diff [file])
    • 版本回退
    • 撤销修改(想恢复到上⼀个版本)
        • 情况⼀:对于⼯作区的代码,还没有 add
        • 情况⼆:已经 add ,但没有 commit
        • 情况三:已经 add ,并且也 commit 了
    • 删除⽂件 (删除也是修改操作)

创建 Git 本地仓库

git init //创建⼀个 Git 本地仓库,仓库是进⾏版本控制的⼀个⽂件⽬录, .git ⽬录是 Git 来跟踪管理仓库,不要手动修改 .git目录。

在这里插入图片描述

配置 Git(⽤⼾名称 和 e-mail 地址)

  1. 设置 ⽤⼾名称 和 e-mail 地址
    git config [–global] user.name “Your Name”
    git config [–global] user.email “email@example.com”

// --global, 表⽰这台机器上所有的 Git 仓库都会使⽤这个配置

  1. 删除对应的配置命令为:
    git config [–global] --unset user.name
    git config [–global] --unset user.email

  2. 查看 [全局] 配置中的用户名和邮箱
    git config [–global] user.name
    git config [–global] user.email

⼯作区、暂存区、版本库

  1. index 就是我们的暂存区,add 后的内容都是添加到这⾥的。
  2. HEAD 就是我们的默认指向 master 分⽀的指针

在这里插入图片描述

  1. ⼯作区:写代码或⽂件的⽬录。

  2. 暂存区:英⽂叫 stage 或 index(索引)。⼀般存放在 .git ⽬录下的 index ⽂件(.git/index)中,

  3. 版本库:⼜名仓库,英⽂名 repository 。⼯作区有⼀个隐藏⽬录 .git ,它不算⼯作区,⽽
    是 Git 的版本库。这个版本库⾥⾯的所有⽂件都可以被 Git 管理起来,每个⽂件的修改、删除,Git
    都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。

  4. 在创建 Git 版本库时,Git 会为我们⾃动创建⼀个唯⼀的 master 分⽀,以及指向 master 的⼀个指针叫 HEAD。

  5. • 当对⼯作区修改的⽂件执⾏ git add 命令时,暂存区⽬录树的⽂件索引会被更新

  6. git commit 时,master 分⽀更新暂存区的⽬录树才会被真正写到版本库中

小结: 通过新建或粘贴进⽬录的⽂件,并不能称之为向仓库中新增⽂件,⽽只是在⼯作区新增了⽂件。必须要通过使⽤ git add 和 git commit 命令才能将⽂件添加到仓库中进⾏管理

git add(工作区 -> 暂存区) / git commit (暂存区 -> 版本库)

  1. 添加⼀个或多个⽂件到暂存区: git add [file1] [file2] …

  2. 添加指定⽬录到暂存区,包括⼦⽬录: git add [dir]

  3. 添加当前⽬录下的所有⽂件改动到暂存区: git add .

  4. 提交暂存区全部内容到本地仓库中: git commit -m “message”

  5. 提交暂存区的指定⽂件到仓库区: git commit [file1] [file2] … -m “message”

git log ,来查看历史提交记录

commit id(⼗六进制):哈希出来的

在这里插入图片描述
git log --pretty=oneline // 优化信息格式
master 分支本身是一个指针,始终指向该分支上的最新提交

对象库 /.git/objects

在这里插入图片描述

objects 为 Git 的对象库,⾥⾯包含了创建的各种版本库对象及内容
object 将 commit id 分成2部分,其前2位是⽂件夹名称,后38位是⽂件名称。

该类⽂件是经过 sha (安全哈希算法)加密过的⽂件,使⽤ git cat-file 命令来查看版本库对象的内容

在这里插入图片描述

  1. index: 暂存区, git add 后会更新该内容。
  2. HEAD: 默认指向 master 分⽀的⼀个指针。
  3. refs/heads/master: ⽂件⾥保存当前 master 分⽀的最新 commit id 。
  4. objects: 包含了创建的各种版本库对象及内容,可以简单理解为放了 git 维护的所有修改。

修改⽂件 (git status / git diff [file])

  1. Git 跟踪并管理的是修改,⽽⾮⽂件。
  2. git status // 查看在你上次提交之后是否有对⽂件进⾏再次修改
  3. git diff [file] // 显⽰暂存区和⼯作区⽂件的差异,显⽰的格式正是Unix通⽤的diff格
    式。也可以使⽤ git diff HEAD – [file] 命令来查看版本库和⼯作区⽂件的区别

版本回退

“回退”本质是要将版本库中的内容进⾏回退,⼯作区或暂存区是否回退由命令参数决定

git reset [–soft | --mixed | --hard] [HEAD]

  1. –mixed 为默认选项,该参数将暂存区的内容退回,⼯作区⽂件保持不变。
  2. –soft 参数,只是将版本库回退到某个指定版本。
  3. –hard 参数将暂存区与⼯作区都退回到指定版本。切记⼯作区有未提交的代码时不要⽤这个命令

在这里插入图片描述
HEAD 说明:
◦ 可直接写成 commit id,表⽰指定退回的版本
◦ HEAD 表⽰当前版本
◦ HEAD^ 上⼀个版本
◦ HEAD^^ 上上⼀个版本
◦ 以此类推…

• 可以使⽤ 〜数字表⽰:
◦ HEAD~0 表⽰当前版本
◦ HEAD~1 上⼀个版本
◦ HEAD^2 上上⼀个版本
◦ 以此类推

git reset --hard + [commit id] // 回退到指定version
git reflog // 该命令⽤来记录本地的每⼀次命令。

Git 的版本回退速度⾮常快,因为 Git 在内部有个指向当前分⽀(此处是master)的HEAD 指针refs/heads/master ⽂件⾥保存当前 master 分⽀的最新 commit id 。当我们在回退版本的时候,Git 仅仅是给 refs/heads/master 中存储⼀个特定的version,可以简单理解
成如下⽰意图:

在这里插入图片描述

撤销修改(想恢复到上⼀个版本)

情况⼀:对于⼯作区的代码,还没有 add

git checkout - - [file] // 让⼯作区的⽂件回到最近⼀次 add 或 commit 时的状态。
要注意 git checkout - - [file] 命令中的 - - 很重要,切记不要省略

情况⼆:已经 add ,但没有 commit

add 后还是保存到了暂存区了,怎么撤销呢?

git reset 回退命令,使⽤ –mixed 参数[可省],可以将暂存区的内容退回为指定的版本内容,但⼯作区⽂件保持不变

ReadMe 为欲撤销修改的file

  1. git reset HEAD ReadMe // 执行后 暂存区是⼲净的,⼯作区有修改,HEAD 表⽰当前版本
  2. git checkout – ReadMe // 丢弃⼯作区的修改
情况三:已经 add ,并且也 commit 了

git reset --hard HEAD^ 回退到上⼀个版本 // 条件:没有把本地版本库推送到远程

在这里插入图片描述

删除⽂件 (删除也是修改操作)

用rm [file] // 仅删除了工作区文件或目录,直接删除是没⽤,⼯作区和版本库就不⼀致了,除了要删⼯作区的⽂件,还要清除版本库的⽂件

  1. 确实要从版本库中删除该⽂件 (删除也是修改操作)
    仅rm,没有删完,我们只删除了⼯作区的⽂件。这时就需要使⽤ git rm 将⽂件从暂存区和⼯作区中删除,并且 git commit -m : ⽂件就从版本库中被删除了

  2. 不⼩⼼删错了, 恢复file
    git checkout – [file] // 删除也是修改

http://www.dtcms.com/a/404157.html

相关文章:

  • 建设优化网站wordpress侧导航菜单
  • 网站建设项目执行情况报告模板手机wap网站下载
  • 【笔试强训】Day01
  • 网站的想法夫唯seo
  • 阿里云建站套餐旅游网站排行榜前十名官网
  • 上饶网站开发 app开发做移动网站点击软件
  • 常州微信网站建设流程北京免费模板建站
  • AKS论文阅读
  • 快捷的赣州网站建设网站开发的逻辑
  • 【图论】【数据结构】图的深度优先与广度优先遍历、最短路径
  • 制作网站作业wordpress设置关键字
  • 网站建设 seo模块泉州企业网站维护定制
  • 如何做音乐分享类网站个人网页制作模板田田田田田田田田
  • 网站建设需求说明书怎么写做婚礼效果图的网站有哪些
  • 温州免费建站私密浏览器视频
  • 速通ACM省铜第十四天 赋源码(Coloring Game)
  • 淮安做网站seo海南省建设注册执业资格中心网站
  • 阿里云 PAI 携手 NVIDIA 提供端到端物理 AI 解决方案
  • 如何用织梦程序制作多个页面网站承接电商网站建设
  • location配置 rewrite配置
  • 建设网站查证书哈尔滨网站建设教学
  • 弧光之源网站建设永久免费国外vps无需信用卡
  • 学校网站建河北省建设厅网站重新安装
  • 南京高端网站设计网站建设公司网站建设公司
  • 深圳seo网站oa系统app下载
  • 此网站不支持下载视频怎么办网站主题编辑工具WordPress
  • 网站的建设维护更换wordpress主题头部
  • 网页模板网站网站建设师特点
  • 网站建设的简洁性郑州市中标公示网
  • 技术速递|如何使用 Playwright MCP 和 GitHub Copilot 调试 Web 应用