常用命令
# 1.git init
初始化一个新的 Git 仓库,生成 .git
文件夹以跟踪项目文件的更改
--bare 创建一个裸仓库(用于共享代码),不含工作区,只包含版本历史
1
# 2.git clone
从现有的远程仓库克隆一个完整的项目到本地,包括历史版本和当前代码
--depth <depth> 只克隆指定层数的历史记录(浅克隆)
--branch <branch_name> 克隆特定的分支,而不是默认的 master 或 main
--single-branch 只克隆指定分支,不克隆其他分支
# 克隆一个远程仓库到当前目录
git clone https://github.com/user/repo.git
# 只克隆最新一次提交
git clone https://github.com/user/repo.git --depth 1
# 克隆名为 "dev" 的分支
git clone -b dev https://github.com/user/repo.git
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# 3.git add
将文件的更改添加到暂存区,准备提交
. 添加当前目录及子目录中所有修改的文件
-p 或 --patch 分阶段添加文件的某些部分(交互式选择更改)
# 添加 file1.txt 到暂存区
git add file1.txt
# 添加所有更改的文件
git add .
# 交互式添加部分更改
git add -p
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 4.git commit
将暂存区中的更改提交到本地仓库,形成历史记录
-m "<message>" 在提交时添加提交信息
--amend 修改上一次提交的提交信息或更改内容
-a 将所有已修改的文件自动加入暂存区(但不包括新建的文件)
# 提交带有提交消息 "Initial commit"
git commit -m "Initial commit"
# 修改上次提交的提交信息
git commit --amend -m "Updated commit message"
# 自动添加所有已修改的文件并提交
git commit -a -m "Fixed bugs"
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# 5.git status
显示工作区和暂存区的当前状态,查看哪些文件已修改、添加或删除
-s 简洁模式,显示文件状态的简要信息
-u 显示未跟踪的文件
1
2
2
# 6.git log
显示提交历史记录,包括每次提交的哈希值、提交者、日期和提交信息
--oneline 以简洁的单行形式显示提交信息
--graph 显示提交历史的分支结构图
--since、--until 显示特定时间范围内的提交
# 显示详细的提交历史
git log
# 以简洁格式显示提交历史
git log --oneline
# 以图形化方式显示分支结构
git log --graph --oneline
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# 7.git reflog
记录了 Git 仓库中所有引用(如分支、HEAD)的位置变更
即使你恢复到了最初的版本,仍然可以通过次命令查看所有的记录,从而回溯版本
git reflog 查看引用日志
git reflog show <reference> 查看特定引用的日志
git reflog show main 查看名为 main 的分支的引用日志
git reset --hard ... 恢复到特定状态
git reset --hard HEAD@{2} 将 HEAD 恢复到引用日志中第 2 条记录的状态
1
2
3
4
5
2
3
4
5
# 8.git checkout/switch
切换分支或恢复文件的某个历史版本
-b <branch_name> 创建并切换到一个新的分支
# 切换到 "dev" 分支
git checkout dev
# 创建并切换到新分支 "feature/new-feature"
git checkout -b feature/new-feature
1
2
3
4
5
6
2
3
4
5
6
# 9.git merge
合并两个分支的更改,将另一个分支的更改合并到当前分支
--no-ff 强制执行非快速前进合并,保留分支合并记录
# 将 "dev" 分支合并到当前分支
git merge dev
# 强制执行非快速前进合并
git merge --no-ff dev
1
2
3
4
5
6
2
3
4
5
6
# 10.git push
将本地提交推送到远程仓库
--force 强制推送,覆盖远程仓库中的提交
--set-upstream 将当前分支与远程仓库中的分支关联起来
# 将本地 "main" 分支推送到远程仓库
git push origin main
# 强制推送,覆盖远程的 "main" 分支
git push --force origin main
1
2
3
4
5
6
7
2
3
4
5
6
7
# 11.git pull
从远程仓库获取最新的更改并将其合并到当前分支
--rebase:拉取并使用 rebase 代替合并,使提交历史更加线性
git pull origin main
# 从远程仓库获取 "main" 分支的更改并合并到当前分支
git pull --rebase origin main
# 拉取并使用 rebase 合并更改
1
2
3
4
5
6
2
3
4
5
6
# 12.git branch
列出、创建或删除分支
-d <branch_name> 删除本地分支
-r 列出远程分支
# 列出所有本地分支
git branch
# 删除本地分支 "feature/new-feature"
git branch -d feature/new-feature
# 列出所有远程分支
git branch -r
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 13.git remote
管理远程仓库的地址,列出、添加或删除远程仓库
add <name> <url> 添加一个远程仓库
remove <name> 移除远程仓库
# 列出远程仓库地址
git remote -v
# 添加远程仓库
git remote add origin https://github.com/user/repo.git
# 删除远程仓库
git remote remove origin
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 14.git reset
重置当前分支到指定的提交,更新暂存区
--soft <commit>:只重置 HEAD 到指定提交,保留暂存区和工作目录的更改
--hard <commit>:重置 HEAD 到指定提交,重置暂存区和工作目录
--mixed <commit>:重置 HEAD 到指定提交,同时重置暂存区
# 将当前分支重置到前一个提交,保留暂存区和工作目录的更改
git reset --soft HEAD~1
# 将当前分支重置到前一个提交,重置暂存区,但保留工作目录的更改
git reset HEAD~1
# 将当前分支重置到前一个提交,重置暂存区和工作目录,丢失所有未提交的更改
git reset --hard HEAD~1
1
2
3
4
5
6
2
3
4
5
6
# 15.git diff
用于显示工作目录与暂存区、当前分支与其他分支之间的差异
git diff 显示工作目录与暂存区之间的差异
git diff --staged 或 git diff --cached 显示暂存区与上一次提交之间的差异
git diff <commit1> <commit2> 显示两个提交之间的差异
git diff <branch1>..<branch2> 显示两个分支之间的差异
git diff <file> 显示指定文件在工作目录和暂存区之间的差异
# 显示工作目录与暂存区的差异
git diff
# 显示暂存区与上一次提交的差异
git diff --staged
# 显示前一个提交和当前提交之间的差异
git diff HEAD~1 HEAD
# 显示 main 分支和 feature-branch 分支之间的差异
git diff main..feature-branch
# 显示 file1.txt 在工作目录与暂存区之间的差异
git diff file1.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16