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)总结

相关推荐
向上的车轮2 小时前
MATLAB学习笔记(七):MATLAB建模城市的雨季防洪排污的问题
笔记·学习·matlab
前端小崔3 小时前
从零开始学习three.js(18):一文详解three.js中的着色器Shader
前端·javascript·学习·3d·webgl·数据可视化·着色器
龙湾开发4 小时前
计算机图形学编程(使用OpenGL和C++)(第2版)学习笔记 10.增强表面细节(二)法线贴图
c++·笔记·学习·图形渲染·贴图
liang_20264 小时前
【HT周赛】T3.二维平面 题解(分块:矩形chkmax,求矩形和)
数据结构·笔记·学习·算法·平面·总结
虾球xz4 小时前
游戏引擎学习第290天:完成分离渲染
c++·人工智能·学习·游戏引擎
虾球xz5 小时前
游戏引擎学习第285天:“Traversables 的事务性占用”
c++·学习·游戏引擎
虾球xz5 小时前
游戏引擎学习第280天:精简化的流式实体sim
数据库·c++·学习·游戏引擎
深度学习入门5 小时前
学习深度学习是否要先学习机器学习?
人工智能·深度学习·神经网络·学习·机器学习·ai·深度学习入门
FAREWELL000755 小时前
Unity基础学习(十五)核心系统——音效系统
学习·unity·c#·游戏引擎
岁岁岁平安6 小时前
Vue3学习(组合式API——Watch侦听器、watchEffect()详解)
前端·javascript·vue.js·学习·watch侦听器·组合式api