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 小时前
Ubuntu入门学习教程,从入门到精通,Ubuntu 22.04的桌面环境 (4)
linux·学习·ubuntu
Mqh1807622 小时前
day46 Grad-CAM
python
郝学胜-神的一滴2 小时前
Python魔法函数一览:解锁面向对象编程的奥秘
开发语言·python·程序人生
05大叔3 小时前
多线程的学习
java·开发语言·学习
白露与泡影3 小时前
使用systemd,把服务装进 Linux 心脏里~
linux·运维·python
能源系统预测和优化研究3 小时前
创新点解读:基于非线性二次分解的Ridge-RF-XGBoost时间序列预测(附代码实现)
人工智能·深度学习·算法
لا معنى له3 小时前
目标分割介绍及最新模型----学习笔记
人工智能·笔记·深度学习·学习·机器学习·计算机视觉
yaoh.wang3 小时前
力扣(LeetCode) 100: 相同的树 - 解法思路
python·程序人生·算法·leetcode·面试·职场和发展·跳槽
月光在发光3 小时前
多态(虚函数核心作用原理)--C++学习(0)
c++·学习