git学习

目录

  • 1.创建仓库
    • [1.1 在自己本地创建一个仓库(git init)](#1.1 在自己本地创建一个仓库(git init))
    • [1.2 从网上克隆一个仓库(git clone)](#1.2 从网上克隆一个仓库(git clone))
  • [2. 工作区域和文件状态](#2. 工作区域和文件状态)
    • [2.1 工作区域:工作区、暂存区、本地仓库](#2.1 工作区域:工作区、暂存区、本地仓库)
    • [2.2 文件状态:未跟踪、未修改、已修改、已暂存](#2.2 文件状态:未跟踪、未修改、已修改、已暂存)
  • [3. 添加和提交文件](#3. 添加和提交文件)
    • [3.1 查看状态(git status)](#3.1 查看状态(git status))
    • [3.2 添加到暂存区(git add)](#3.2 添加到暂存区(git add))
    • [3.3 提交到仓库(git commit -m message)](#3.3 提交到仓库(git commit -m message))
    • [3.4 查看历史提交记录(git log 或 git log --oneline)](#3.4 查看历史提交记录(git log 或 git log --oneline))
  • [4. 回退到之前的某一版本(git reset --soft/hard/mixed)](#4. 回退到之前的某一版本(git reset --soft/hard/mixed))
    • [4.1 工作区和暂存区的内容都保留(git reset --soft ID)](#4.1 工作区和暂存区的内容都保留(git reset --soft ID))
    • [4.2 工作区和暂存区的内容都不保留(git reset --hard ID)](#4.2 工作区和暂存区的内容都不保留(git reset --hard ID))
    • [4.3 只保留工作区(我本地文件夹)中的内容(git reset --mixed ID)](#4.3 只保留工作区(我本地文件夹)中的内容(git reset --mixed ID))
  • [5. 查看在不同版本之间的差异(git diff)](#5. 查看在不同版本之间的差异(git diff))
    • [5.1 工作区 VS. 暂存区(git diff)](#5.1 工作区 VS. 暂存区(git diff))
    • [5.2 工作区 VS. 版本库(git diff HEAD)](#5.2 工作区 VS. 版本库(git diff HEAD))
    • [5.3 暂存区 VS. 版本库(git diff --cached)](#5.3 暂存区 VS. 版本库(git diff --cached))
    • [5.4 版本1 VS. 版本2(git diff 版本1ID 版本2ID)](#5.4 版本1 VS. 版本2(git diff 版本1ID 版本2ID))
    • [5.5 上一个版本 VS. 当前版本(git diff HEAD~ HEAD)](#5.5 上一个版本 VS. 当前版本(git diff HEAD~ HEAD))
    • [5.6 查看某个文件的差异内容(在上述命令最后加上文件名)](#5.6 查看某个文件的差异内容(在上述命令最后加上文件名))
  • [6. 删除文件](#6. 删除文件)
    • [6.1 方式一:先在工作区删除文件,然后提交到暂存区(git add)------比较麻烦](#6.1 方式一:先在工作区删除文件,然后提交到暂存区(git add)——比较麻烦)
    • [6.2 同时删除工作区和暂存区的文件(git rm 文件名)------比较方便](#6.2 同时删除工作区和暂存区的文件(git rm 文件名)——比较方便)
  • [7. 忽略文件(.gitignore)](#7. 忽略文件(.gitignore))
  • [8. 本地仓库与远程仓库(pull与push)](#8. 本地仓库与远程仓库(pull与push))
  • [9. 在vscode中的使用](#9. 在vscode中的使用)
  • [10. 分支的基本操作](#10. 分支的基本操作)
    • [10.1 分支的查看(git branch)、创建(git branch 分支名)、切换(git switch 分支名)](#10.1 分支的查看(git branch)、创建(git branch 分支名)、切换(git switch 分支名))
    • [10.2 分支的合并(git merge 分支名)](#10.2 分支的合并(git merge 分支名))
    • [10.3 删除已合并的(git branch -d 分支名)、删除未合并的(git branch -D 分支名)](#10.3 删除已合并的(git branch -d 分支名)、删除未合并的(git branch -D 分支名))
  • [11. 解决合并冲突](#11. 解决合并冲突)
  • [12. 回退和变基(git rebase 要变到的基的名称)](#12. 回退和变基(git rebase 要变到的基的名称))
  • git命令速查表
  • 参考教程

仓库就是一个目录(文件夹),这个目录里面的所有文件都可以被git管理起来,

1.创建仓库

1.1 在自己本地创建一个仓库(git init)



1.2 从网上克隆一个仓库(git clone)

2. 工作区域和文件状态

2.1 工作区域:工作区、暂存区、本地仓库

共三种工作区域

2.2 文件状态:未跟踪、未修改、已修改、已暂存

共四种文件状态

3. 添加和提交文件

3.1 查看状态(git status)

git status可以查看当前仓库(问价)处在哪个分支,有哪些文件,以及这些文件当前处在哪个状态。

3.2 添加到暂存区(git add)

3.3 提交到仓库(git commit -m message)

message是一个参数,自己随便填就行。

注意:git commit只会提交暂存区中的文件,不会提交工作区中的文件。

3.4 查看历史提交记录(git log 或 git log --oneline)

4. 回退到之前的某一版本(git reset --soft/hard/mixed)

先创建并依次提交3个文件:

我们先把repo仓库(文件夹)复制三份,分别命名为repo-soft、repo-hard、repo-mixed,之后会分别执行那三个操作,方便对比观察效果。

4.1 工作区和暂存区的内容都保留(git reset --soft ID)

4.2 工作区和暂存区的内容都不保留(git reset --hard ID)

4.3 只保留工作区(我本地文件夹)中的内容(git reset --mixed ID)

  • soft和mixed的作用基本相似(区别在于是否保留暂存区中的内容)
    当我们连续提交了很多个版本,但是感觉这些提交没太大意义,就可以使用这两个参数来回退,修改之后再重新提交
    区别在于:使用mixed重新提交之前,需要先将变动的内容git add到暂存区;而soft就不用再进行git add操作了。
  • 只有要放弃本地所有修改的内容时,才会使用hard。(注意:此时我本地的文件也没了谨慎使用
    如果误操作的话,可以使用git reflog来查看我们操作的历史记录,然后使用git reset --hard ID,回退到那个版本就行了

5. 查看在不同版本之间的差异(git diff)

5.1 工作区 VS. 暂存区(git diff)

git diff 后面如果什么都不加,则默认比较的是"工作区"和"暂存区"之间的差异。

会显示更改的文件以及更改的详细信息。

5.2 工作区 VS. 版本库(git diff HEAD)

5.3 暂存区 VS. 版本库(git diff --cached)

5.4 版本1 VS. 版本2(git diff 版本1ID 版本2ID)

当前版本的提交ID也可以用HEAD来表示

5.5 上一个版本 VS. 当前版本(git diff HEAD~ HEAD)

当前版本的提交ID可以用 HEAD 来表示

当前版本的上一个版本提交ID可以用 HEAD~HEAD^ 来表示
HEAD~2 表示当前版本的上两个版本的提交ID

5.6 查看某个文件的差异内容(在上述命令最后加上文件名)

6. 删除文件

6.1 方式一:先在工作区删除文件,然后提交到暂存区(git add)------比较麻烦

6.2 同时删除工作区和暂存区的文件(git rm 文件名)------比较方便

只删除暂存区中的文件,而不删除工作区(本地)中的文件(git rm --cache 文件名)

7. 忽略文件(.gitignore)



https://github.com/github/gitignore 这里有各种语言的忽略文件,可以参考。

8. 本地仓库与远程仓库(pull与push)


9. 在vscode中的使用

在vscode中的使用可以参考:HDAlex_John-B站

提交------>提交到本地仓库中

同步更改------>更改到远程仓库中

10. 分支的基本操作

当需要多人协作的时候,可能会涉及到分支。每个人在自己分支上工作,之后再统一合并。

10.1 分支的查看(git branch)、创建(git branch 分支名)、切换(git switch 分支名)

10.2 分支的合并(git merge 分支名)

10.3 删除已合并的(git branch -d 分支名)、删除未合并的(git branch -D 分支名)

11. 解决合并冲突

当两个分支修改了同一个文件的同一行代码,再合并时,就会发生冲突。此时需要我们手动修改冲突。



12. 回退和变基(git rebase 要变到的基的名称)



git命令速查表

参考教程

GeekHour-B站
HDAlex_John-B站
【2025版】最新GitHub新手用法详解(适合新手入门)零基础学习必备-CSDN

相关推荐
装不满的克莱因瓶1 小时前
【踩坑】IDEA提交Git .gitignore忽略文件不起作用
java·git·.gitignore·踩坑
Irene.ll1 小时前
DAY23
python
专注于大数据技术栈1 小时前
java学习--Collection的迭代器
java·python·学习
梨落秋霜8 小时前
Python入门篇【文件处理】
android·java·python
kisshuan123968 小时前
【深度学习】使用RetinaNet+X101-32x4d_FPN_GHM模型实现茶芽检测与识别_1
人工智能·深度学习
Java 码农8 小时前
RabbitMQ集群部署方案及配置指南03
java·python·rabbitmq
Learn Beyond Limits8 小时前
解构语义:从词向量到神经分类|Decoding Semantics: Word Vectors and Neural Classification
人工智能·算法·机器学习·ai·分类·数据挖掘·nlp
哥布林学者9 小时前
吴恩达深度学习课程五:自然语言处理 第一周:循环神经网络 (六)长短期记忆 LSTM
深度学习·ai
张登杰踩10 小时前
VIA标注格式转Labelme标注格式
python
气概10 小时前
法奥机器人学习使用
学习·junit·机器人