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

相关推荐
小白学大数据2 分钟前
Python 自动化爬取网易云音乐歌手歌词实战教程
爬虫·python·okhttp·自动化
fpcc28 分钟前
AI和大模型——Fine-tuning
人工智能·深度学习
努力努力再努力FFF1 小时前
医生对AI辅助诊断感兴趣,作为临床人员该怎么了解和学习?
人工智能·学习
AI医影跨模态组学1 小时前
如何将纵向MRI深度学习特征与局部晚期直肠癌新辅助放化疗后的免疫微环境建立关联,并解释其对pCR及预后的机制
人工智能·深度学习·论文·医学·医学影像·影像组学
风之所往_1 小时前
Python 3.0 新特性全面总结
python
2401_882273722 小时前
如何在 CSS 中正确加载本地 JPG 背景图片
jvm·数据库·python
Lucas_coding2 小时前
【Claude Code Router】 Claude Code 兼容 OpenAI 格式 API, Claude code 接入本地部署模型
人工智能·python
测试员周周2 小时前
【AI测试系统】第5篇:从 Archon 看 AI 工程化落地:为什么"确定性编排+AI 弹性智能"是终局?
人工智能·python·测试
James_WangA2 小时前
我给 AOI 设备装了一个 Agent,然后发现工具注册才是最难写的
架构·github
James_WangA2 小时前
产线上跑 Agent:LLM 挂了不是 500 错误,是停线
架构·github