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

Git笔记---简单介绍与基本使用

1. 什么是Git

一句话,Git 是目前最流行的分布式版本控制系统。也就是帮助我们维护代码各个版本的工具,尤其是在与他人协作开发的过程中,能协助我们进行高效的代码管理。

Ubuntu安装git:

sudo apt install git

Git 工作流程围绕「3 个本地区域」「1 个远程仓库」展开:

区域作用
工作区(Workspace)你本地编辑代码的文件夹(看得见、能修改)
暂存区(Index)临时存放要提交的修改(介于工作区和版本库之间)
版本库(Repository)本地仓库,保存所有提交记录(.git 文件夹)
远程仓库(Remote)云端仓库(如 GitHub/GitLab)

2. 基本操作

2.1 创建并初始化本地仓库

  1. 新建项目文件夹(工作区,也即你需要使用git管理的文件夹),进入文件夹:
    mkdir workspace && cd workspace
  2. 初始化 Git 仓库(生成隐藏的 .git 文件夹,管理版本):
    git init
    初始化完成后,git会在当前目录下创建一个" .git "隐藏文件,这其实就是所谓的本地仓库:
  3. 配置用户名和邮箱(Git 需识别提交者身份):
    # 配置用户名(建议与远程仓库账号一致,如 GitHub 用户名)
    git config user.name "你的用户名"# 配置邮箱(建议与远程仓库绑定邮箱一致)
    git config user.email "你的邮箱地址"# 全局配置(为配置本地仓库时默认使用全局配置)
    git config --global user.name "你的用户名"git config --global user.email "你的邮箱地址"

2.2 提交本地代码到版本库

  1. 查看工作区状态,确认工作区是否有可提交的文件:
    git status
  2. 将文件添加到暂存区:
    git add file
  3. 将暂存区文件提交到版本库(必须写提交信息,说明修改内容):
    git commit -m "修改信息"
    • 查看已提交版本的日志:
      git log [--pretty=oneline]
      # 注:--pretty=oneline表示以更具可读性的一行形式打印日志

    3. 本地仓库(.git)

    接下来,我们需要介绍.git中的几个重要字段,以帮助我们更好地理解git的工作原理:

    shishen@hcss-ecs-b8e6:~/113code/blog/workspace$ tree .git
    .git
    ├── branches
    ├── COMMIT_EDITMSG
    ├── config
    ├── description
    ├── HEAD
    ├── hooks
    │   ├── applypatch-msg.sample
    │   ├── commit-msg.sample
    │   ├── fsmonitor-watchman.sample
    │   ├── post-update.sample
    │   ├── pre-applypatch.sample
    │   ├── pre-commit.sample
    │   ├── pre-merge-commit.sample
    │   ├── prepare-commit-msg.sample
    │   ├── pre-push.sample
    │   ├── pre-rebase.sample
    │   ├── pre-receive.sample
    │   ├── push-to-checkout.sample
    │   └── update.sample
    ├── index
    ├── info
    │   └── exclude
    ├── logs
    │   ├── HEAD
    │   └── refs
    │       └── heads
    │           └── master
    ├── objects
    │   ├── e1
    │   │   └── d7b5a4daa40482c6626cfedc944ca2b714cce2
    │   ├── e6
    │   │   └── 9de29bb2d1d6434b8b29ae775ad8c2e48c5391
    │   ├── f9
    │   │   └── 3e3a1a1525fb5b91020da86e44810c87a2d7bc
    │   ├── info
    │   └── pack
    └── refs├── heads│   └── master└── tags15 directories, 25 files

    3.1 object版本对象

    实际上,我们提交的是对代码仓库进行的修改,git使用object对象来表示(.git/objects目录下的文件)。每一个object对象都表示代码仓库的一个版本

    我们刚才使用git log进行日志查看时,会发现我们的每一次提交都有一个编号。这是git用于唯一标识某个版本的id(哈希值)。

    可以看到,我们在向版本库提交修改之后,objects目录下就会新增一个对应的文件,它的命名就是我们提交的版本的编号:

    查看object文件的内容无法直接查看,需要用到如下的指令:

    git cat-file -p 版本编号

    3.2 其他

    1. config:当前本地仓库的「专属配置文件」(优先级高于全局配置 ~/.gitconfig)。
    2. HEAD:存储「当前分支的指针」—— 告诉 Git “你现在正在哪个分支工作”。
      可以看到,我们当前正处在默认的主分支" master "下。
    3. refs 目录:存储「引用(指针)」——Git 用 “指针” 替代直接操作哈希值,让用户通过 “分支名”“标签名” 就能访问对应的提交对象(不用记复杂的 40 位哈希)。
      可以看到," master "分支文件中存放的就是我们最后一次提交的版本编号。

    4. 版本回退

    版本回退是 Git 核心功能之一,核心目的是将代码恢复到历史某个稳定版本。其底层逻辑是:修改分支指针(refs/heads/分支名),让它指向目标历史提交(objects 中的 commit 对象),再根据需求同步工作区 / 暂存区文件。

    4.1 找到目标版本

    回退前必须先确定「要回退到哪个版本」,通过以下命令查看提交历史:

    命令作用
    git log显示完整提交历史(作者、时间、哈希、提交信息)
    git log --pretty=oneline简洁显示( 40 位哈希 + 提交信息)
    git log --oneline简洁显示(前 7 位哈希 + 提交信息)
    git log -n k显示最近 k 次提交(n 后接数字)
    git reflog显示所有操作记录(包括回退、分支切换)

    注:在不发生冲突时,可以使用前7位哈希来代替完整的哈希。

    4.2 本地仓库版本回退

    git reset [--hard/--mixed/--soft] 版本哈希值
    参数作用效果风险程度
    --hard

    移动分支指针,并回退暂存区、工作区到目标版本。

    高(会丢数据)
    --mixed(默认)

    移动分支指针,并回退暂存区到目标版本。

    --soft移动分支指针。

    4.3 撤销工作区未暂存修改

    git checkout -- [file]

    仅针对「已跟踪文件」(即之前通过 git add 提交到过暂存区 / 版本库的文件):

    • 如果文件「未暂存」(仅工作区修改,没执行 git add):用「版本库中最新提交的文件版本」覆盖工作区修改,直接恢复到上一次 commit 的状态;
    • 如果文件「已暂存」(执行过 git add,但没 commit):用「暂存区的文件版本」覆盖工作区修改(比如暂存后又改了工作区文件,想恢复到 git add 时的状态)。
    http://www.dtcms.com/a/614001.html

    相关文章:

  4. php网站开发项目经验如何写wordpress是什么软件
  5. 手机网站排名优化软件怎么查网站开发者联系方式
  6. 菲律宾有做网站的吗人人开发网站
  7. 部署Cloudflare免费图床——免费开源强大
  8. Vue Router 3 升级 4:写法、坑点、兼容一次讲透
  9. JSP 、JSTL、MVC分层思想——以登录验证为例
  10. 新操作系统。
  11. Hutool-JSON 工具类超全使用指南:告别 JSON 处理繁琐操作
  12. 445 端口(SMB 服务)完整渗透流程总结
  13. 咔咔做受视频网站摄影师网站建设
  14. 大连建设网网址是多少啊重庆seo网站设计
  15. TDengine 字符串函数 POSITION 用户手册
  16. 燕郊建设局网站网站排名首页前三位
  17. Docker容器使用手册——进阶篇(下)
  18. C++入门指南:开启你的编程之旅
  19. 智取能量:如何最大化战斗分数?
  20. php网站开发技术要点网站模板制作流程
  21. 进程和诊断工具速查手册(8.13):VMMap / DebugView / LiveKd / Handle / ListDLLs 一页式现场排障清单
  22. 【ros2】ROS2话题(Topic)通信完全指南:订阅与发布详解
  23. 网站安全证书有问题如何解决网站地图如何做
  24. 演练:使用VB开发多智能体协作的荣格八维分析器
  25. 第8章 广播机制
  26. 最近的一对
  27. 网站设计建网站互联网是做什么的
  28. 【C++】AVL树:详细使用及旋转
  29. 网站开发技术的雏形 cgi满18点此转入2o2
  30. 小华HC32L136K8TA 单片机新建 MDK5 工程模板(二)
  31. Qt告警clazy-detaching-temporary浅谈
  32. 前端构建工具扩展,Webpack插件开发
  33. 拆解 LLM 的 “思考” 过程:推理机制深度解读