参考文章:https://www.bilibili.com/video/BV1HM411377j/?spm_id_from=333.1007.top_right_bar_window_custom_collection.content.click&vd_source=e01172ea292c1c605b346101d7006c61
# 一、git 本地操作
# 1.1 git 安装
如果 git 已经安装好,那么输入 git -v 命令,可以查看版本号。
C:\Users\Ember>git -v | |
git version 2.42.0.windows.2 |
git 安装完成之后可以首先配置用户名和邮箱。
git config --global user.name "qianqiu-cell" | |
git config --global user.email "2832567851@qq.com" |
其中 --global 命令可以替换为:
--Local: (默认)本地配置,只对本地仓库有效 | |
--global: 全局配置,对当前用户所有仓库有效 | |
--system: 系统配置,对当前系统所有用户有效 |
使用如下命令保存用户名和邮箱,避免每一次的输入。
git config --global credential.helper store |
查看配置好的用户名和邮箱
C:\Users\Ember>git config --global --list | |
user.name=Ember | |
user.email=2832567851@qq.com | |
safe.directory=F:/blog/.deploy_git | |
http.sslverify=false |
# 1.2 新建 git 仓库
方式一:将一个目录变成 git 仓库,使用 git init 命令即可。
E:\python\z_test\test>git init | |
Initialized empty Git repository in E:/python/z_test/test/.git/ |
方式二:从远程服务器上克隆一个仓库,使用 git clone 命令即可。
E:\python\z_test\test>git clone https://gitee.com/mindspore/mindformers.git | |
Cloning into 'mindformers'... | |
remote: Enumerating objects: 50448, done. | |
remote: Counting objects: 100% (188/188), done. | |
remote: Compressing objects: 100% (107/107), done. | |
remote: Total 50448 (delta 121), reused 125 (delta 81), pack-reused 50260Receiving objects: 100% (50448/50448), 45.44 MiB | 4.81 MiB/s | |
Receiving objects: 100% (50448/50448), 49.09 MiB | 5.59 MiB/s, done. | |
Resolving deltas: 100% (38161/38161), done. |
创建好 git 仓库后会在本地文件夹中生成一个 .git 文件夹,里面包含一些配置文件。若删除 .git 文件夹,则会破坏本地仓库。
# 1.3 工作区域和文件状态
git 的本地数据管理分为三个区域,分别是工作区,暂存区,和本地仓库
工作区(Working Directory):工作区是本地计算机上的项目目录,用户在这里进行文件的创建、修改和删除操作。工作区包含了当前项目的所有文件和子目录。
- 显示项目的当前状态。
- 文件的修改在工作区中进行,但这些修改还没有被记录到版本控制中。
暂存区(Staging area/Index):用于临时存放改动,事实上它只是一个文件,保存即将提交的文件列表信息。
- 暂存区保存了将被包括在下一个提交中的更改。
- 可以多次使用 git add 命令来将文件添加到暂存区,直到准备好提交所有更改。
本地仓库(Local Repository):git 仓库,保存了所有的提交记录,包括提交记录的提交信息、提交记录的提交者、提交记录的提交时间等。
- 版本库分为本地版本库和远程版本库。这里主要指本地版本库。
- 本地版本库存储在 .git 目录中,它包含了所有提交的对象和引用。
git 文件状态分为 untracked(未跟踪)、unmodified(未修改)、committed(已提交)、staged(已暂存)
untracked(未跟踪):未跟踪的文件,新创建的文件,还没有被 git 管理起来的文件,所以不会被 git 追踪。
unmodified(未修改):已经被 git 管理起来了,但文件内容没有被修改。
modified(已修改):文件被修改,但还没有添加到暂存区里面。
staged(已暂存):文件被修改,并且已经提娜佳到了暂存区域内的文件。
# 1.4 添加和提交文件
git ls-files # 查看暂存区中的内容 | |
git status # 查看当前工作目录的文件状态 | |
git add <file> # 将指定文件添加到暂存区 | |
git add <dir> # 将指定目录下的所有文件添加到暂存区 | |
git add *.txt # 将指定文件类型添加到暂存区 | |
git add . # 将所有文件添加到暂存区,其中。表示当前目录 | |
git rm --cache <file> # 删除暂存区的指定文件 | |
git commit -m "message" # 将暂存区的文件提交到本地仓库,不会提交工作区中的内容 | |
git log # 查看提交记录 | |
git log --oneline # 查看简洁的提交记录 |
# 1.5 git reset 回退版本
git reset --soft <commit_hash> # 回退到某一版本,保留工作区和暂存区的所有修改内容 | |
git reset --hard <commit_hash> # 回退到某一版本,丢弃工作区和暂存区的所有修改内容 | |
git reset --mixed <commit_hash> # (默认)回退到某一版本,只保留工作区的修改内容,而丢弃暂存区的修改内容 | |
git log --oneline # 查看简洁的提交记录,其中包含了版本号信息 | |
git reflog # 查看 git 命令执行记录,用于误操作时查看操作前的版本号,并回退到之前的版本 |
# 1.6 git diff 查看差异
使用 git diff 命令可以查看当前工作区、暂存区、本地仓库之间的差异,也可以查看两个版本之间的差异,以及不同分支之间的差异。
# 其中 HEAD 表示指向分支的最新提交节点 | |
git diff # (默认)比较工作区和暂存区的差异 | |
git diff HEAD # 比较工作区和本地仓库之间的差异 | |
git diff --cached (or --staged) # 比较暂存区和本地仓库之间的差异 | |
git diff <commit_hash> <commit_hash> # 比较两个版本的差异 | |
git diff HEAD~ HEAD # 比较上一个版本和最新版本之间的差异 | |
git diff HEAD~2 HEAD # 比较前两个版本和最新版本之间的差异 | |
git diff HEAD~2 HEAD <file> # 比较指定文件在前两个版本和最新版本之间的差异 | |
git diff <branch_name> <branch_name> # 比较两个分支之间的差异 |
E:\python\z_test\test_b\test_b_b>git diff | |
diff --git a/test.txt b/test.txt # 发生变更的文件 | |
index 8b4e49c..e1c0c2f 100644 # 文件的哈希值,文件的权限 | |
--- a/test.txt # 删除的文件内容 | |
+++ b/test.txt # 新增的文件内容 | |
@@ -1 +1,2 @@ | |
-this is an content for test. # 修改前的内容(开始) | |
\ No newline at end of file # 修改前的内容(结束) | |
+this is an content for test. # 修改后的内容(开始) | |
+edit for 1. | |
\ No newline at end of file # 修改后的内容(结束) |
# 1.7 git rm 删除文件
rm <file>; git add <file> # 先从工作区删除文件,然后再暂存删除内容 | |
git rm <file> # 从工作区和暂存区中删除文件 | |
git rm --cached <file> # 从暂存区中删除文件,但工作区中保留文件 | |
git rm -r <dir> # 删除指定目录下的所有文件 | |
# 删除后不要忘记使用 git commit 命令提交到本地仓库 |
# 1.8 .gitignore 忽略文件
一些可以参考的.gitignore 模板:https://github.com/github/gitignore
# 二、git 远程操作
# 2.1 ssh key 生成
由于本地 Git 仓库和 GitHub 仓库之间的传输是通过 SSH 加密的,所以需要配置验证信息。使用以下命令生成 SSH Key:
ssh-keygen -t rsa -C "你的邮箱" |
之后打开 xxx-rsa.pub (公钥) 文件,复制其中的内容,并添加到 Github 中(一般为 Setting -> SSH and GPG keys -> New SSH key)。
# 2.2 本地仓库和远程仓库的同步
git 的本地仓库和远程仓库是两个相互独立的仓库,需要使用一种机制来同步本地仓库和远程仓库中的内容,所使用到的命令为 git push
和 git pull
。
git remote add <远程仓库别名> <远程仓库地址> # 添加远程仓库 | |
git remote -v # 查看远程仓库 | |
git push -u <远程仓库名> <分支名> # 把本地仓库的修改推送给远程仓库 | |
git pull <远程仓库名称> <远程分支名>:<本地分支名> # 把远程仓库的修改拉去到本地仓库,远程分支名称和本地分支名称相同时可以省略冒号后面部分 |
# 2.3 分支简介和基本操作
git branch # 查看分支列表 | |
git branch-name # 创建分支 | |
git switch branch-name # 切换分支 | |
git merge branch-name # 合并分支 | |
git branch -d branch-name # 删除分支(已合并) | |
git branch -D branch-name # 删除分支(未合并) |