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

相关推荐
一隅论数智3 天前
给AI一张“业务概念地图“:本体如何从哲学走向企业智能
大数据·人工智能·经验分享·笔记·学习·学习方法·政务
默_笙3 天前
🍙 给每个请求过安检:FastAPI 是怎么把校验写进类型注解的
python
XiHongShi20163 天前
STM32F407 RTC定时器例程,建议保存
stm32·单片机·学习
LaughingZhu3 天前
Product Hunt 每日热榜 | 2026-09-19
人工智能·深度学习·神经网络·搜索引擎·百度
qq_426003963 天前
启动playwright录制codegen生成自动化测试脚本
python·自动化
Winlifes3 天前
我给 Codex 做了一个 Git 面板:分支树、提交历史和工作区操作
git
虎头金猫3 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
长沙三为智能科技3 天前
家政小程序开发从0到上线:五阶段交付流程与验收清单
python
爱吃苹果的日记本3 天前
离散数学第六课
学习·离散数学