首页 > 其他分享 >Git教程2

Git教程2

时间:2024-08-19 17:18:25浏览次数:8  
标签:文件 HEAD git 教程 Git 提交 diff 暂存区

六、Git的工作区域和文件状态

1、工作区域:

(1) 工作区(Working Directory):电脑上可以看到的目录,即实际操作的目录。车间
(2) 暂存区(Staging Area/Index):保存即将提交到Git仓库的修改内容。运输工具 Cache
(3) 本地仓库(Local Repository):存储代码和版本信息的主要位置。仓库
(4) 工作区 git add -> 暂存区 git commit -> 本地仓库。

2、文件状态:

(1) 未跟踪:untrack,新创建但是未被git管理的文件。
(2) 未修改:unmodified,被git管理但是内容未发生变化的文件。
(3) 已修改:modified,已经修改但是未添加到暂存区的文件。
(4) 已暂存:staged,已修改并已经添加到暂存区的文件。


七、添加和提交文件

1、命令:

(1) echo "xxx" > file1.txt 将内容添加到file1.txt文件中。
(2) cat file1.txt 查看文件内容。
(3) git status 查看仓库中的文件状态。
(4) git add file1.txt 将文件添加到暂存区。
(5) git commit -m "内容" 将暂存区的文件提交到仓库中。
(6) git commit只会提交暂存区中的文件,不会提交到工作区中的文件。且要使用 -m 参数,指定提交的信息。
(7) git add *.txt 将以txt结尾的文件全部加入到暂存区。
(8) git add . 将全部文件添加到暂存区,. 表示当前目录。
(9) vim编辑:
① i键进入编辑模式。
② esc 回到命令模式,输入:wq保存退出,提交完成。
(10) git log 查看提交记录;git log --oneline 查看简洁的提交记录。


八、Git reset回退版本

1、git reset:

(1) 可以回退到之前的某一个提交的状态。
(2) git reset的三种模式:对应于三种参数
git reset --soft 回退到某一个版本,并且保留工作区和暂存区的所有修改内容。
git reset --hard 回退到某一个版本,并且丢弃工作区和暂存区的所有修改内容。
git reset --mixed 介于soft和hard之间,回退到某一个版本,并且保留工作区的修改内容而丢弃暂存区中的修改内容。mixed是reset命令的默认参数。

2、演示:

(1) cp -rf repo repo-soft
① cp:copy,用于复制文件或目录。
② -r:recursive,递归地复制指定目录及其子目录下的所有文件和目录。
③ -f:force,如果目标位置有同名文件或目录存在,cp命令无条件覆盖它们,而不会提示用户确认。
④ repo:原目录。
⑤ repo-soft:目标目录。
(2) repo-soft、repo-hard、repo-mixed三个目录用于测试三种不同的模式。
(3) git reset --soft
① 由于file3是第三次提交,而使用soft参数回退到了第二次提交,所以file3是new file。
(4) git reset --hard
① HEAD^:表示回退到上一个版本。
② ls:工作区不存在file3;ls-files:暂存区也不存在file3。
③ 使用--hard参数时,工作区和暂存区内容都会被清空。
(5) git reset --mixed mixed可以省略。
git reset HEAD^ 默认是mixed参数。
cat file3.txt 查看文件内容。
③ 工作区有file3,但是暂存区没有file3。

3、谨慎使用hard参数,会清楚工作区和暂存区的全部内容。如果误操作,使用`git reflog` 命令查看过去一段时间的HEAD的移动。

4、git refloggit log 的对比:

(1) git log 显示的是提交历史,git reflog 显示的是所有引用(包括HEAD和分支)的移动历史。
(2) 当要查看所有分支的提交历史,使用git log ;当由于回退等操作导致暂存区内容丢失时,使用git reflog 查找过去一段时间的HEAD移动。


九、Git diff查看差异

1、git diff:

(1) 查看工作区、暂存区、本地仓库之间的差异。
(2) 查看文件在不同版本之间的差异。
(3) 查看文件在不同分支之间的差异。
(4) git diff无参数时,默认比较工作区(Working Directory)和暂存区(Staging Area)之间的差异。(很奇怪,做实验时这里明明是比较的是已经提交(仓库)和在工作区的文件。)
① 每次add和commit一个文件,最后修改file3文件:333 -> 3333。
git diff 之后的结果:
第一行:变化的文件。
第二行:Git将文件内容使用Hash生成一个40位的哈希值,这里只显示前7位。100644为文件的权限。
第三行:红色为删除内容,绿色为添加的内容。
③ 通过 git add . 将工作区中的内容添加到暂存区后,使用 git diff 发现没有变化。说明此时工作区和暂存区之间没有差异。
(5) git diff HEAD 比较工作区和版本库之间的差异。
① 此时工作区和暂存区内容一致(执行了git add .),但是由于还没有执行提交操作,所以工作区和版本库之间仍有差异。
(6) git diff --cached 比较暂存区和版本库之间的差异。
① 由于没有commit,暂存区和版本库之间有差异。
② 当commit后,暂存区和版本库、工作区和版本库之间都没有差异。

2、git diff比较不同提交ID的信息:

(1) git diff ID1 ID2
(2) 可以用HEAD指向分支的最新的提交节点。
(3) 比较HEAD和HEAD上一次的提交的信息:git diff HEAD~ HEADgit diff HEAD^ HEAD
(4) 比较HEAD和HEAD之前第三个版本的信息:git diff HEAD~3 HEAD
(5) 只比较file3的内容:git diff HEAD~3 HEAD file3.txt

标签:文件,HEAD,git,教程,Git,提交,diff,暂存区
From: https://www.cnblogs.com/douzj/p/18367686

相关文章

  • AI绘画Stable Diffusion 必学技能——从零开始训练你的专属 Lora 模型!模型训练保姆级
    大家好,我是灵魂画师向阳接触AI绘画的小伙伴,一定听过Lora。Lora模型全称是:Low-RankAdaptationofLargeLanguageModels,可以理解为Stable-Diffusion中的一个插件,在生成图片时,Lora模型会与大模型结合使用,从而实现对输出图片结果的调整。我们举个更容易懂的例子:大模型就像......
  • Linux 安装Mysql详细教程
    前言本文主要介绍在Linux环境下安装MySQL的过程。1:下载MySQL5.7的rpm安装包选择合适的版本,这里我们使用的是MySQL5.7.20;下载完成后发送到自己的CentOS7服务器里,这里可以通过Xftp上传MySQLhttps://www.mysql.com/1.在根目录下创建一个mysqlpackage目录mkdirmysqlpa......
  • MAC苹果电脑JDK下载安装教程
    JDKForMac 在Mac上安装JDK的步骤主要包括下载JDK安装包、‌安装JDK、‌查询JDK安装路径、‌配置JavaJDK环境变量以及使配置生效。‌以下是详细的步骤说明:‌下载JDK安装包访问Oracle官网,‌选择适合MacOS版本的JDK安装包进行下载。‌对于M系列芯片,‌选择Arm64DMGinsta......
  • 最强AI换脸软件FaceFusion一键包教程: 下一代脸部交换器和增强器。
    大家好,今天给大家介绍一款强大的换脸工具——FaceFusion。官方宣称的是:下一代脸部交换器和增强器。新版本在原有基础上增加了更多的模型和高清算法,显著提升了图片和视频的换脸效果。此外,还新增了三种遮罩功能,有效解决了脸部有物体遮挡时的融合效果差和跳闪问题。现在基础换脸......
  • 《灵魂面甲》风灵月影使用教程解析及注意事项
    《灵魂面甲》(Soulmask)是CampfireStudio发行的一款开放世界生存制作游戏,本教程将指导您如何安全、有效地使用风灵月影修改器来增强您的游戏体验。请注意,使用修改器可能会影响游戏的平衡性和乐趣,也可能违反游戏服务条款,请在了解并接受这些风险后再进行操作。准备工作1.确......
  • 玩转Wireshark抓包神器教程 ---- 系列文章
    随笔分类 -  Wireshark  《熬夜整理》保姆级系列教程-玩转Wireshark抓包神器教程(5)-Wireshark捕获设置《熬夜整理》保姆级系列教程-玩转Wireshark抓包神器教程(4)-再识Wireshark《熬夜整理》保姆级系列教程-玩转Wireshark抓包神器教程(3)-Wireshark在MacOS系统上安......
  • 使用云服务器部署项目----保姆级教程
    1.注册云服务器首先需要一个云服务器2.登录云服务器大家在选择服务器版本的时候尽量选择CentOS7的版本3.注册宝塔Linux面板安装宝塔时选在线安装,输入ip密码就可以自动安装了安装完成后会弹出宝塔访问链接和用户名密码在登录宝塔面板之前,在平台上随便开启一个端口,作为......
  • 苹果手机微信分身教程来啦!!!
    ......
  • python入门教程(非常详细!3w+ 文字)
    先序:学习编程语言要先学个轮廓,刚开始只用学核心的部分,一些细节、不常用的内容先放着,现用现查即可;把常用的东西弄熟练了在慢慢补充。1、安装Python解释器为什么需要安装PythonPython语言本身是由解释器执行的,因此你需要在你的计算机上安装Python解释器。这个解释器会将......
  • 【生日视频制作】充气热气球飞艇AE模板修改文字软件生成器教程特效素材【AE模板】
    热气球飞艇生日视频制作教程AE模板修改文字特效广软件告生成器【生日视频制作】充气热气球飞艇AE模板修改文字软件生成器教程特效素材【AE模板】生日视频制作步骤:安装AE软件下载AE模板把AE模板导入AE软件修改图片或文字渲染出视频......