参考文章: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 pushgit 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  # 删除分支(未合并)
更新于 阅读次数