Git 是一个开源的分布式版本控制系统。
- 本地历史仓库(Repository):存放不同版本的代码。
- 暂存区(Index):代码提交前的临时存储区。
- 工作目录(Working Tree):修改代码的区域。
- 克隆(Clone):将远程仓库中的内容复制到本地仓库。
- 推送(Push):将本地仓库中的内容推送到远程仓库。
- 拉取(Pull):更新远程仓库中的改动到本地仓库。
| 1
2
3
4
5
6
 | # 查看 git 状态
git status
# 查看日志
git log
# 查看简短日志
git reflog
 | 
| 1
2
3
4
5
6
7
8
 | # 初始化,创建 git 仓库
git init
# 添加文件到暂存区
git add <file>
# 将暂存区文件提交到本地历史仓库
git commit -m <message>
# 将所有修改或删除的文件提交到本地历史仓库(不包括新建文件)
git commit -a -m <message>
 | 
| 1
2
 | # git reset --hard a3a9cf1
git reset --hard <commit>
 | 
- 切换:将HEAD指向别的分支。
- 合并:将main指向该分支,然后将HEAD指向main分支。
|  1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
 | # 查看所有分支
git branch
# 创建新分支
git branch <branch-name>
# 删除指定分支
git branch -d <branch-name>
# 切换到其他分支
git checkout <branch>
# 创建新分支,并立即切换过去
git checkout -b <branch>
# 将指定分支合并到当前分支
git merge <branch-name>
 | 
- Github:全球最大。
- Gitlab:国外网站。
- Gitee:国内最大。
- 配置用户名和邮箱,然后生成密钥(公钥和私钥)。
| 1
2
3
4
5
 | # 配置用户名和邮箱
git config --global user.name "backtraxe"
git config --global user.email "backtraxe@gmail.com"
# 生成密钥
ssh-keygen -t ed25519 -C "backtraxe@gmail.com"
 | 
- 进入- ~/.ssh文件夹,复制公钥- id_ed25519.pub文件中的内容。
 
- 回到网页进行配置,点击右上角头像。 - Github:Settings->SSH and GPG keys->New SSH key。Title随便填,Key粘贴公钥内容。
- Gitee:设置->SSH公钥。标题随便填,公钥粘贴公钥内容。
 
- 输入如下指令测试是否配置成功。 
| 1
2
3
4
5
6
 | # Github
ssh -T git@github.com
# Gitlab
ssh -T git@gitlab.com
# Gitee
ssh -T git@gitee.com
 | 
- 添加或修改文件。
- 添加到暂存区。
- 提交到本地仓库。
- 推送到远程仓库。
| 1
2
3
4
5
6
7
 | # 添加远程仓库,起一个别名
# git remote add origin https://github.com/backtraxe/backtraxe.github.io.git
git remote add <name> <url>
# 推送到远程仓库,更新远程仓库
# git push -u origin master
git push -u <repository> <refspec>
 | 
| 1
2
3
4
5
6
7
 | # 克隆远程仓库
# git clone https://github.com/backtraxe/backtraxe.github.io.git
git clone <repo>
# 拉取远端仓库,更新本地仓库
# git pull origin master
git pull <repository> <refspec>
 | 
同一文件存在多个新版本,如下所示。需要先拉取远程仓库,手动修改冲突文件后,再次推送即可。
| 1
2
 |  ! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'https://github.com/backtraxe/repo_for_test.git'
 | 
| 1
2
3
4
5
6
 | # 丢弃当前文件修改内容
git checkout -- <file>
# 丢弃本地仓库的所有改动与提交版本
git fetch origin
git reset --hard origin/master
 | 
|  1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
 | # 将一个 Git 仓库添加为当前仓库的子模块
git submodule add https://github.com/USERNAME/REPONAME.git
# git clone 含有子模块的项目
# 1.项目已经克隆到了本地
git submodule init
git sunmodule update
# 或者
git submodule update --init
# 2.项目还未克隆到本地
git clone --recurse-submodules https://github.com/USERNAME/REPONAME.git
# 或者
git clone --recursive https://github.com/USERNAME/REPONAME.git
 | 
工作目录中需要 git 忽略的文件目录。
问:
git clone或git push等操作时无法连接至服务器,报错内容如下:
| 1
 | SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443
 | 
答:
该问题由开启代理软件导致。设置->网络和Internet->代理,查看地址和端口,通过如下命令进行配置。
| 1
2
 | # git config --global http.proxy 127.0.0.1:10809
git config --global http.proxy IP_ADDRESS:PORT
 | 
- Git Cheat Sheets