Git指南
什么是 Git

Git 是一个开源的分布式版本控制系统(Distributed Version Control System, DVCS)。
作用:把项目中文件的每一次变化都记录下来,并让你能随时回到任意一个历史状态,同时支持多人在不同环境下并行开发、最后再把各自的成果合并到一起。无论项目规模是几个人的小工具,还是成千上万文件的大型工程,Git 都能高效管理版本,并且在团队协作中保持清晰、可追溯的改动历史。
安装 Git,Git - Install
安装好后,打开 GitBash,输入下面两条指令进行配置
git config --global user.name <Your Name>
git config --global user.email <email@example.com>这两条指令是告诉 Git 每次提交的作者是谁,邮箱是什么
git config命令的--global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。
创建仓库
版本库/仓库(repository)里面的所有文件都可以被 Git 管理起来,每个文件的修改,删除,Git 都能跟踪,以便任何时候都可以追踪历史,需要的时候也可以还原
-
新建一个新目录,右键空白处 Open Git Bash Here
1
2
3
4
5
6# 创建 learngit 目录(这个目录是工作区)
mkdir learngit
# 进入这个文件夹
cd leangit
# 显示当前路径
pwd -
使用
git init命令初始化仓库,把这个目录变成 Git 可以管理的仓库 -
可以点击查看隐藏的文件,一个
.git文件夹已经创建好也可以使用
ls -ah命令查看.git文件夹
把文件添加到本地仓库
在 learngit 目录下创建一个 readme.txt 文件(建议所有文本编辑都使用 VS code,而不要使用 Windows 自带的记事本),内容如下
1 | Git is a version control system. |
将文件放入 Git 仓库,只需两步
-
执行
git add readme.txt命令,告诉 Git 把文件添加到暂存区(Staging Area / Index),没有任何显示,就对了 -
执行
git commit -m "***"命令,告诉 Git 把文件提交到本地仓库(星号为这次提交的说明,不建议省略)1
2
3
4$ git commit -m "wrote a readme file"
[master (root-commit) 1b0fd94] wrote a readme file
1 file changed, 2 insertions(+)
create mode 100644 readme.txt
也可以一次修改多个文件,然后使用命令 git add . ,. 表示当前目录,所以这条命令表示:把当前目录及其子目录中所有修改(包括删除)过的文件、以及新创建的文件,全部加入暂存区。
或者分别添加到暂存区
1 | git add file1.txt |
然后再执行 git commit -m "***"
Git 基本操作
修改 readme.txt 文件
1 | Git is a distributed version control system. |
然后运行 git status 指令
1 | $ git status |
git status 指令告诉我们,当前状态:readme.txt 文件被修改过,但还没有提交到本地仓库
使用 git diff readme.txt 命令查看具体修改内容
1 | $ git diff readme.txt |
然后添加到 git add readme.txt 暂存区,再次查看当前状态 git status
1 | $ git status |
已加入暂存区、修改即将被提交,下一步运行 git commit -m "***",然后 git status
1 | $ git status |
Git 告诉我们没什么需要提交,工作目录是干净的
版本回退
再次修改 readme.txt 文件
1 | Git is a distributed version control system. |
然后提交至仓库 add --> commit
现在有三个版本
1 | 版本1 |
使用 git log 命令查看提交历史
1 | commit de71edb4b817190c26fd43e0bdde6c0c0fd09b0f (HEAD -> master) |
也可以加上 --pretty=oneline 简化输出信息,git log --pretty=oneline
1 | $ git log --pretty=oneline |
假如想把 append GPL 版本退回到 add distributed 版本,使用 git rest 命令
1 | # git reset 语法格式 |
运行 git reset --hard 1b0f 回退到 wrote a readme file 版本,然后 git log 查看提交历史
1 | $ git log |
此时仅剩下 wrote a readme file 版本的信息,若想返回到 append GPL 版本,翻找此版本对应的 commit ID (别关闭命令行窗口,如果关闭了可以使用 git reflog 来查看命令历史) 运行 git reset --hard de71edb ,然后就又恢复为 append GPL 版本了
工作区和暂存区
工作区(Working Directory):是电脑里能看到的目录,如 learngit 文件夹
暂存区(stage/index):一般存放在 .git 目录下的index 文件(.git/index)中,所以把暂存区有时也叫作索引(index)。
版本库(Repository):工作区里的隐藏目录 .git ,这个不算工作区,是 Git 的版本库
工作流程:

Git 版本库里有缓存区,还有 Git 自动创建的第一个分支 master ,以及指向master 的一个指针叫 HEAD
git add 将“文件修改”添加到暂存区,然后 git commit 提交更改,把暂存区的所有内容提交到当前分支。
撤销修改
- 当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,使用
git restore
更改 readme.txt 文件,保存
1 | Git is a distributed version control system. |
运行 git status 查看当前状态
1 | $ git status |
使用 git restore readme.txt 丢弃工作区的更改,让这个文件返回到最近一次 git add 和 git commit 时的状态
- 当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,使用
git restore --staged
1 | $ git add readme.txt |
使用 git restore --staged readme.txt 把暂存区的修改撤销(unstage)
然后 git restore readme.txt 丢弃工作区的修改,文件恢复成未修改状态
删除文件
1 | # 创建一个新的文本文件,然后随便写点内容,保存 |
使用 git rm 命令将文件从暂存区和工作区中删除
1 | $ git rm newfile.txt |
确认删除 git commit
1 | $ git commit -m "delete newfile" |
如果删错了,并且已经执行了 git rm 则可以 git restore --staged newfile.txt 先把暂存区的修改撤销,然后 git restore newfile.txt 在撤销工作区的修改,文件就恢复了。
注:从来没有被添加到版本库就被删除的文件,是无法恢复的!
远程仓库
将电脑与 GitHub 建立连接
打开 Git-Bash,运行
1 | git config --global user.name <你的用户名> |
运行 git config -l 检查是否配置成功
接着运行
1 | ssh-keygen -t rsa -C <你的邮箱> |
一直按 Enter 键就可以了
两个密钥的默认位置在 C:\Users\用户名 文件夹下,需显示隐藏的项目,找到 .ssh 文件夹,里面有两个 id_rsa 文件
id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人
密钥用于此电脑连接至 GitHub
注:如果之前搭梯子生成过密钥,即 .ssh 文件夹,里面已经有两个 id_rsa 文件了,就不用再生成了
密钥生成之后,用 VS Code 打开公钥文件,全选复制里面的内容
登录 GitHub
然后点右上角头像 > Settings > SSH and GPG keys > New SSH key
Title 随便起名,Key Type 默认,Key 的内容为公钥文件里的内容,之后点 Add SSH key
添加远程仓库
登录 GitHub ,创建一个名字为 learngit 的公开仓库,其他设置默认
可以看到 GitHub 的提示

在本地的 learngit 仓库下运行
1 | git remote add origin git@github.com:Venqi-S/learngit.git |
添加后远程仓库的名字就是 origin
然后运行 git branch -M main 将分支名更改为 main
最后 git push -u origin main 把本地库的内容推送到远程仓库,实际上是把当前分支 main (改名之前是master)推送到远程
删除(解绑)远程仓库
如果添加远程仓库时地址填写错了,或者不想和远程仓库建立连接了,可以使用 git remote rm <name> 命令
使用前可以使用 git remote -v 检查远程库信息
1 | $ git remote -v |
然后根据名字删除,如 git remote rm origin 这样就和远程仓库解绑了
从远程仓库克隆
进入一个远程库,找到远程库的地址

在本地新建一个目录,右键鼠标打开 Git-Bash 输入 git clone git@github.com:Venqi-S/learngit.git ,远程库就下载到本地了
自定义 Git
忽略特殊文件
在工作区的根目录下运行 touch .gitignore ,把需要忽略的文件名/文件夹的命写进去
最后也提交到 Git 就完成了


