本文档旨在提供 Git 的常用命令及其使用示例,涵盖全局参数配置、获取本地仓库、基本概念、本地仓库操作、远程仓库操作和分支操作等内容。
1. 全局参数配置
Git 允许用户配置全局参数,以便在所有的仓库中共享这些设置。
<BASH>
# 设置用户名
git config --global user.name "Your Name"
# 设置邮箱
git config --global user.email "your.email@example.com"
# 查看所有配置
git config --list
# 查看特定配置
git config user.name
# 设置默认编辑器为 VSCode
git config --global core.editor "code --wait"
# 设置默认的合并工具
git config --global merge.tool vscode
# 启用颜色输出
git config --global color.ui auto
2. 获取本地仓库
初始化仓库
<BASH>
# 在当前目录初始化一个新的 Git 仓库
git init
克隆仓库
<BASH>
# 克隆远程仓库到本地
git clone <repository_url>
# 克隆指定分支
git clone -b <branch_name> <repository_url>
3. 基本概念
Git 是一个分布式版本控制系统,用于跟踪文件的变化并协作开发。为了更好地理解 Git 的工作机制,以下是 Git 中的一些核心概念:
3.1 工作区(Working Directory).git所在目录就是工作区
- 工作区是用户当前正在编辑的目录,包含项目的所有文件和文件夹。
- 工作区中的文件可以是未跟踪的文件(未被 Git 管理)或已跟踪的文件(已纳入 Git 管理)。
- 在工作区中修改文件后,需要通过
git add
将更改添加到暂存区。
3.2 暂存区(Staging Area / Index)
- 暂存区是一个临时区域,用于保存用户打算提交的更改。
- 通过
git add
命令将工作区中的修改添加到暂存区。 - 暂存区允许用户选择性地提交某些更改,而不是一次性提交所有修改。
- 可以通过
git status
查看暂存区和工作区的状态。
3.3 本地仓库(Local Repository)
- 本地仓库是 Git 存储项目历史记录的地方,通常位于项目根目录下的
.git
文件夹中。 - 每次通过
git commit
提交更改时,Git 会将暂存区的内容保存到本地仓库,并生成一个唯一的提交记录(Commit)。 - 本地仓库包含了项目的完整历史记录、分支信息、标签等。
3.4 提交(Commit)
- 提交是 Git 中的一个基本单位,代表一次对项目的更改。
- 每次提交都会生成一个唯一的 SHA-1 哈希值,用于标识该提交。
- 提交包含以下信息:
- 作者和提交者的信息。
- 提交的时间戳。
- 提交的更改内容(通过
diff
查看)。 - 提交的注释信息(通过
git commit -m
添加)。
3.5 远程仓库(Remote Repository)
- 远程仓库是托管在服务器上的 Git 仓库,用于团队协作和代码共享。
- 通过
git clone
命令将远程仓库克隆到本地,或者通过git remote add
添加新的远程仓库。 - 通过
git push
将本地仓库的更改推送到远程仓库,通过git pull
或git fetch
获取远程仓库的更改。 - 常见的远程仓库托管平台包括 GitHub、GitLab 和 Bitbucket。
3.6 分支(Branch)
- 分支是 Git 中用于并行开发的核心功能。
- 默认情况下,Git 会创建一个
master
或main
分支。 - 每个分支代表一个独立的开发线,可以在分支上进行修改而不影响其他分支。
- 通过
git branch
创建新分支,通过git checkout
切换分支,通过git merge
合并分支。 - 分支的轻量级特性使得 Git 在并行开发中非常高效。
3.7 标签(Tag)
- 标签是 Git 中用于标记特定提交的功能,通常用于发布版本(如
v1.0.0
)。 - 标签分为轻量标签(Lightweight Tag)和附注标签(Annotated Tag)。
- 轻量标签:只是一个指向特定提交的指针。
- 附注标签:包含额外的信息,如标签名、作者、日期和注释。
- 通过
git tag
创建标签,通过git push --tags
将标签推送到远程仓库。
3.8 HEAD
HEAD
是一个指针,指向当前工作区所在的分支或提交。- 通常情况下,
HEAD
指向当前分支的最新提交。 - 通过
git checkout <commit>
可以分离HEAD
,使其直接指向某个提交而不是分支。
4. 本地仓库操作
查看状态
<BASH>
# 查看当前仓库状态
git status
添加文件到暂存区
<BASH>
# 添加单个文件
git add <file_name>
# 添加所有文件
git add .
提交更改
<BASH>
# 提交到本地仓库
git commit -m "Commit message"
# 提交并跳过暂存区
git commit -a -m "Commit message"
查看提交历史
<BASH>
# 查看提交历史
git log
# 查看简洁的提交历史
git log --oneline
# 查看某个文件的修改历史
git log <file_name>
撤销更改
<BASH>
# 撤销工作区的更改
git checkout -- <file_name>
# 撤销暂存区的更改
git reset HEAD <file_name>
# 修改最后一次提交
git commit --amend
删除文件
<BASH>
# 从 Git 和文件系统中删除文件
git rm <file_name>
# 从 Git 中删除文件,但保留在文件系统中
git rm --cached <file_name>
5. 远程仓库操作
添加远程仓库
<BASH>
# 添加远程仓库
git remote add origin <repository_url>
查看远程仓库
<BASH>
# 查看远程仓库信息
git remote -v
推送更改到远程仓库
<BASH>
# 推送当前分支到远程仓库
git push origin <branch_name>
# 推送所有分支到远程仓库
git push --all origin
拉取远程仓库的更改
<BASH>
# 拉取远程仓库的更改并合并
git pull origin <branch_name>
# 拉取远程仓库的更改但不合并
git fetch origin
删除远程分支
<BASH>
# 删除远程分支
git push origin --delete <branch_name>
6. 分支操作
创建分支
<BASH>
# 创建新分支
git branch <branch_name>
# 创建并切换到新分支
git checkout -b <branch_name>
切换分支
<BASH>
# 切换到指定分支
git checkout <branch_name>
查看分支
<BASH>
# 查看所有分支
git branch
# 查看远程分支
git branch -r
# 查看所有分支(包括远程)
git branch -a
合并分支
<BASH>
# 将指定分支合并到当前分支
git merge <branch_name>
# 查看合并冲突
git status
删除分支
<BASH>
# 删除本地分支
git branch -d <branch_name>
# 强制删除本地分支
git branch -D <branch_name>
重命名分支
<BASH>
# 重命名当前分支
git branch -m <new_branch_name>
# 重命名其他分支
git branch -m <old_branch_name> <new_branch_name>
查看分支历史
<BASH>
# 查看分支的提交历史
git log --graph --oneline --all
结语
本文档涵盖了 Git 的常用命令,帮助你更高效地使用 Git 进行版本控制。如果需要更深入的学习,可以参考 Pro Git 书籍。