目录
- 1.创建本地仓库
- 2.配置 Git
- 3.添加文件
- 1.添加文件
- 2.提交文件
- 3.其他 && 说明
- 4.删除文件
- 5.跟踪修改文件
- 6.版本回退
- 7.撤销修改
- 0.前言
- 1.未add
- 2.已add,未commit
- 3.已add,已commit
1.创建本地仓库
- 创建⼀个Git本地仓库:
git init - 运行该命令后,会在当前目录下多出一个
.git的隐藏目录 .git目录是Git用来跟踪管理仓库的,不要手动修改这个目录里面的文件- 如果改乱了,该Git仓库就被破坏了
2.配置 Git
- 安装Git后⾸先要做的事情是设置⽤⼾名称和Email地址
git config [--global] user.name "Your Name"git config [--global] user.email "email@example.com"--global是一个可选项,表⽰这台机器上所有的Git仓库都会使⽤这个配置
- 查看配置:
git config -l - 删除对应的配置:
git config [--global] --unset user.namegit config [--global] --unset user.email
3.添加文件
1.添加文件
- 添加⼀个或多个⽂件到暂存区:
git add [file1] [file2] ... - 添加某个目录下的所有⽂件改动到暂存区:
git add [dir] - 添加当前⽬录下的所有⽂件改动到暂存区:
git add .
2.提交文件
- 提交暂存区全部内容到本地仓库中:
git commit -m "message" - 提交暂存区的指定⽂件到仓库区:
git commit [file1] [file2] ... -m "message" - 注意:
git commit后⾯的-m选项,要跟上描述本次提交的message,且不能省略- 该描述用来记录提交细节,是给人看的,所以要好好描述
3.其他 && 说明
- 查看历史提交记录:
git log- 如果觉得信息太多,可以加上
--pretty=oneline参数
- 如果觉得信息太多,可以加上
- 类似
7a535a4f3e6dba8a8dbcea9d7e3ee3c395aeabf3,是每次提交的commit id(版本号)- 不是单纯的数字,而是由
SHA1计算出来的十六进制数
- 不是单纯的数字,而是由
4.删除文件
- 方法一:
- 先在工作区中删除该文件:
rm file - 添加工作区中该文件的修改:
git add file - 提交修改:
git commit
- 先在工作区中删除该文件:
- 方法二:
- 直接删除并添加修改:
git rm file- 相当于将
rm file和git add file合并为了一步
- 相当于将
- 提交修改:
git commit
- 直接删除并添加修改:
5.跟踪修改文件
- Git跟踪并管理的是修改,⽽⾮⽂件
- 查看当前仓库的状态:
git status$ git status On branch master Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git restore <file>..." to discard changes in working directory) modified: 233.txt no changes added to commit (use "git add" and/or "git commit -a") - 显⽰暂存区和⼯作区⽂件的差异:
git diff [file]$ git diff diff --git a/233.txt b/233.txt index 99a6aad..80c8ca9 100644 --- a/233.txt +++ b/233.txt @@ -1 +1,2 @@ SnowK +DieSnowK - 查看版本库和⼯作区⽂件的区别:
git diff HEAD -- [file]
6.版本回退
- 版本回退:
git reset,本质是将版本库中的内容进⾏回退,⼯作区或暂存区是否回退由命令参数决定 - 语法格式:
git reset [--soft | --mixed | --hard] [HEAD]--mixed:将暂存区和版本库的内容回退到指定版本,工作区的内容不变- 默认选项,使用时可以不带此参数
--soft:将版本库的内容回退到指定版本,工作区和暂存区的内容不变--hard:将工作区、暂存区、版本库的内容都回退到指定版本- 慎用,特别是当前工作区还有未提交的代码时
- 因为工作区回滚,未提交的代码就再也找不回来了
[HEAD]说明:可直接写成commit id/SHA1,表⽰指定退回的版本- 也可以写成如下形式
HEAD表⽰当前版本HEAD^上⼀个版本HEAD^^上上⼀个版本- 以此类推…
- 还可以使用
~数字表示- HEAD~0表⽰当前版本
- HEAD~1上⼀个版本
- HEAD~2上上⼀个版本
- 也可以写成如下形式
- 如果回退到一个版本后悔了,想再倒回去,该怎么办?
- 可以继续使用
git reset命令,直接使用之前拿到的git log中的commit id即可
- 可以继续使用
- 如果连
git log中的commit id也找不到了,该怎么办?- 使用
git reflog补救,该命令用来记录本地的每一次命令 git reflog拿到的是一个很简短的哈希值,但是凭借哈希值,也可以回退到特定版本- 该简短的哈希值是
commit id的部分 - 即:可以使用部分
commit id来表示目标版本
- 该简短的哈希值是
$ git reflog 1320449 (HEAD -> master) HEAD@{0}: reset: moving to 13204498006394d6067fbc8b6046885c6e5e9649 7a535a4 HEAD@{1}: reset: moving to HEAD^^ 1320449 (HEAD -> master) HEAD@{2}: commit: 233.txt add DieSnowK d74fd33 HEAD@{3}: commit: 666.txt 7a535a4 HEAD@{4}: commit (initial): First Commit $ git reset --hard 7a535a4 HEAD is now at 7a535a4 First Commit $ git log commit 7a535a4f3e6dba8a8dbcea9d7e3ee3c395aeabf3 (HEAD -> master) Author: DieSnowK <1752351098@qq.com> Date: Tue Jul 23 14:30:39 2024 +0800 First Commit - 使用
- 但是如果由于长时间开发,导致
commit id早就找不到了,此时再想回退倒该版本,貌似就不可能了:P - 说明:Git的版本回退速度⾮常快的原因
-
Git在内部有个指向当前分⽀(此处是
master)的HEAD指针refs/heads/master⽂件⾥保存当前master分⽀的最新commit id
-
在回退版本的时候,Git仅仅是给
refs/heads/master中存储了一个特定的commit id
-
7.撤销修改
0.前言
- 撤销修改一般会遇到三种情况
- ⼯作区的代码,还没有
add:只有工作区有当前代码 - 已经
add,但还未commit:只有工作区和暂存区有当前代码 - 已经
add,并且commit:工作区、暂存区、版本库都有当前代码
- ⼯作区的代码,还没有
- 首先要明确:撤销的目的,其实是为了不影响远端仓库的代码
1.未add
- 手动撤销:大眼瞪小眼,一个个盯着对比,然后删除
- 非常容易出错,及其不推荐
- 让工作区回到该版本的最初状态:
git checkout -- [filename]- 注意:
--不能丢,丢了就是其他含义了
- 注意:
2.已add,未commit
- 此时可以先
git reset --mixed [HEAD],将暂存区的内容回退到指定的版本- 此处,可以将暂存区回退到该版本最初始的状态
- 然后就与情况一相同了,相当于是未
add的情况- 此时执行
git checkout -- [filename]即可
- 此时执行
3.已add,已commit
- 前置条件:
commit后没有push到远端仓库 - 直接回退到上一个版本即可:
git reset --hard HEAD^







![[E二叉树] lc572. 另一棵树的子树(dfs+前中序判断+树哈希+树上KMP+好题)](https://i-blog.csdnimg.cn/direct/d7b7510090d7462e9fcd4195479f4e65.png)










