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

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.kler.cn/a/420251.html

相关文章:

  • C++知识整理day3类与对象(下)——赋值运算符重载、取地址重载、列表初始化、友元、匿名对象、static
  • 数据仓库的概念
  • linux模拟试题
  • 408——数据结构(持续更新)
  • Linux-虚拟环境
  • 思维导图+实现一个登录窗口界面
  • 【赛博保安】安全日记之常用术语(一)
  • 【青牛科技】SCU2N60E/SCD2N60E N沟道增强型功率场效应晶体管采用Silicore先进的VDMOS技术生产
  • 【Spring】聊聊@EventListener注解原理
  • Linx下自动化之路:PostgreSQL 安装包精准自动化部署至指定路径并注册成服务全解析
  • 【计算机网络】实验2:总线型以太网的特性
  • 中断,定时器相关内容
  • Selenium 基于浏览器自动化模块
  • react 组件双向绑定
  • 教务(选课)管理系统
  • SpringBoot -拦截器Interceptor、过滤器 Filter 及设置
  • c语言——数组名该如何理解呢?
  • VSCode中“Run Code”运行程序时,终端出现中文乱码解决方法
  • Burp Suite 全面解析:开启你的 Web 安全测试之旅
  • DNS查询工具
  • MyBatis框架 与 传统JDBC连接数据库的对比
  • selenium动态判断滚轮方向样例
  • 【深度学习|特征增强模块】AttentionEnhancementModule模块和普通 QKV Attention模块的在深度学习网络中的作用-2
  • 自动化是语法,智能化是语义与语用
  • 使用Python和OpenAI Whisper为视频生成字幕
  • Vue文字转语音实现