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

Git操作学习1

一、一些Linux相关指令

在当前目录下,创建文件并写入内容:echo "这是第一个文件">file1.txt

查看文件的内容: cat file1.txt  会显示:这是第一个文件

修改文件名:mv file.txt file4.txt 把file.txt修改为file4.txt

复制文件夹: cp -rf a(被复制的文件夹名) b(重新复制的文件夹名)

二、git的区域

git的分为工作区、暂存区、本地仓库三个状态

  1. 工作区(Working Directory)

    • 工作区是你在电脑上看到的文件和目录,是你可以直接编辑文件的地方。
    • 当你对文件进行修改时,这些更改首先出现在工作区。
    • 工作区中的文件状态可以是已跟踪(tracked)或未跟踪(untracked)。已跟踪的文件是那些已经被 Git 记录的文件,而未跟踪的文件是 Git 尚未管理的文件。
  2. 暂存区(Staging Area/Index)

    • 暂存区是一个中间区域,用于暂存即将进行提交的更改。
    • 使用 git add 命令可以将工作区的更改添加到暂存区,这意味着你告诉 Git 你想要在下一次提交中包含这些更改。
    • 暂存区允许你精细控制哪些改动会被包含在下一个提交中,哪些不会。
  3. 本地仓库(Local Repository)

    • 本地仓库是位于你电脑上的 .git 目录,它包含了所有的版本历史记录,即所有的提交(commits)。
    • 当你执行 git commit 命令时,Git 会将暂存区的所有内容永久保存为一个快照,这个快照就构成了一个新的提交。
    • 本地仓库中的提交可以被推送到远程仓库(Remote Repository),与其他人共享。

三、git操作

1.添加和提交文件

创建仓库:git init

查看仓库的状态:git status

添加到暂存区:git add 文件名

git add *.txt (把目录下所有以txt结尾的文件都提交进仓库暂存区)

git add .(把目录下所有文件都添加进仓库暂存区)

把文件从暂存区再拿回:git rm --cached 文件名

把文件提交到仓库中(只会提交暂存区的文件而不会提交工作区的文件):git commit -m"提交的信息"  (注意 m和""之间没有空格 并且是英文双引号 否则会进入git commit -m "第一次提交“ dquote>状态)

如果没有-m "提交的信息",会进入交互的界面,默认使用vim提交交互的信息(保存退出:wq 不保存退出:q!)

这样提交过后git status中就没有file1.txt的状态信息了

 

查看提交记录:git log

2.git reset回退版本

git reset --soft

会退到某一个版本并且保存工作区和暂存区的所有内容

git reset --hard

会退到某一个版本并且丢弃工作区和暂存区的所有内容

git reset --mixed

会退到某一个版本并且保存工作区修改内容 丢弃暂存区的修改内容 是git reset --mix的默认参数

eg创建三个文件

初始化仓库 把三个文件分别放入暂存区再提交到仓库里面,分为三次操作。

打印仓库状态git log

复制三个文件夹来回退

1.使用 --soft:工作区和暂存区的内容都不会被清空。

显示暂存区的目录:git ls-files

显示工作区的内容:ls

2.使用 --hard:工作区和暂存区都会被清空

工作区和暂存区file3.txt都没有了

3.使用 -- mixed:

工作区还有 暂存区没有了

4.误操作处理

(谨慎使用hard命令 但即使不小心使用了也没关系 git中所有操作都是可回溯的 使用git reflog命令查看操作的历史记录 找到误操作前的版本号 使用git reset --hard 版本号就可以了 )

3.使用git diff查看差异

 (1)git diff

表示工作file3.txt少了一个333,多了一个pig。表示工作区和暂存区的内容之间的差异,因为我们修改的内容没有添加到暂存区。

现在把修改的内容添加到暂存区,没有输出内容,表示工作区和暂存区内容是相同的。

(2)git diff HEAD

比较工作区和版本库的差异

我们修改的内容还没有执行提交操作 所以工作区和版本库的是不同的

表示工作区和仓库的内容是不相同的

(3)git diff --cached

比较暂存区和版本库之间的差异

现在是有差异的

提交一下

返回空 说明暂存区和版本库也是一样的

也返回空 说明工作区和版本库也是一样的

(3)git diff ID1 ID2

比较两个版本库之间的差异 只要提交两个版本的id就可以了

(5)git diff ID HEAD

比较版本库和当前版本之间的差异

(5)git diff HEAD~ HEAD

HEAD~表示上一个版本 HEAD表示当前版本

除了~以外 ^也是可以的 ~2表明HEAD之前的两个版本

比较当前版本与上一个提交版本之间的 差异

(6)git diff HEAD~ HEAD 文件名

这样就只显示两个这两个版本之间指定文件的差异,其他的就不显示了。

(7)总结

http://www.lryc.cn/news/496667.html

相关文章:

  • 【计算机网络】细说IP
  • 树与图深度优先遍历——acwing
  • vue3.0 根据富文本html页面生成压缩包(含视频在线地址、图片在线地址、前端截图、前端文档)
  • WPF+LibVLC开发播放器-LibVLC在C#中的使用
  • 消息中间件-Kafka1-实现原理
  • 2023年华数杯数学建模B题不透明制品最优配色方案设计解题全过程文档及程序
  • Mysql事务常见面试题 -- 事务的特性 ,并发事务问题 , undo_log和redo_log , 分布式事务
  • 【数据库系列】Spring Boot如何配置Flyway的回调函数
  • 分布式推理框架 xDit
  • DR.KNOWS:医疗图谱UMLS + 图神经网络 + LLM 模拟医生的诊断推理过程, 从症状出发找到可能的诊断结果
  • 缓存雪崩 详解
  • 使用 Vite 创建 Vue3+TS 项目并整合 ElementPlus、Axios、Pinia、Less、Vue-router 等组件或插件
  • Flink随笔 20241203 Flink重点内容
  • shell脚本实战
  • 【机器学习】分类任务: 二分类与多分类
  • FreeSWITCH mod_conference 的按键会控
  • 串口工作方式
  • 统计Nginx的客户端IP,可以通过分析Nginx的访问日志文件来实现
  • Apache Airflow 快速入门教程
  • 42 基于单片机的智能浇花系统
  • 乐橙云小程序插件接入HbuilderX
  • VoCo-LLaMA: Towards Vision Compression with Large Language Models
  • Vue+vite 组件开发的环境准备
  • 基于社区发现的GraphRAG思路
  • react学习记录
  • Day2——需求分析与设计
  • VScode离线下载扩展安装
  • 【机器学习】机器学习的基本分类-监督学习-决策树(Decision Tree)
  • 【第 1 章 初识 C 语言】1.8 使用 C 语言的 7 个步骤
  • Docker 使用 Dockerfile 文件打包部署前端项目