Git 是目前最流行的分布式版本控制系统,由 Linus Torvalds 创建,用于高效管理代码版本,阮一峰老师的 Git 教程以通俗易懂、逻辑清晰著称,帮助无数开发者快速上手,以下结合阮一峰老师的讲解,梳理 Git 常用命令的核心用法与实践场景。

基础配置与仓库初始化
在使用 Git 前,需先配置用户信息,这是每次提交记录的标识,通过 git config 命令设置全局或局部用户名和邮箱:
- 全局配置:
git config --global user.name "Your Name" - 全局配置:
git config --global user.email "your.email@example.com" - 查看配置:
git config --list
初始化仓库时,在项目目录执行 git init,会在当前目录创建一个 .git 文件夹,用于存储版本历史记录,若要克隆远程仓库,使用 git clone [仓库地址],git clone https://github.com/user/repo.git,这会自动下载整个仓库到本地。
文件状态与暂存区管理
Git 的核心工作区包括:工作目录(编辑文件)、暂存区(临时存储即将提交的文件)、版本库(最终提交的历史记录),查看文件状态使用 git status,会显示未跟踪、已修改、已暂存等状态。
添加文件到暂存区是提交前的关键步骤:

git add [文件名]:添加指定文件(如git add readme.md)。git add .或git add -A:添加所有修改和未跟踪的文件。git reset [文件名]:将已暂存的文件从暂存区移除(回退到工作目录)。
若要取消工作区的修改(恢复到最近提交状态),使用 git checkout -- [文件名],注意:此操作会丢失未提交的修改,需谨慎使用。
版本提交与历史查看
提交暂存区的文件到版本库,使用 git commit -m "提交说明",提交说明需清晰描述变更内容,若提交后发现漏掉文件,可通过 git commit --amend 修改最后一次提交(会打开编辑器修改说明或添加暂存文件)。
查看提交历史是日常高频操作:
git log:显示详细的提交历史(包括作者、时间、提交说明),支持git log --oneline简化输出(每行显示一个提交的哈希值和说明)。git log --graph --all:以图形化方式展示分支合并历史。git show [提交哈希]:查看某次提交的具体修改(如git show a1b2c3d)。
分支管理:协作与迭代的基石
分支是 Git 的核心功能,允许并行开发不同功能而不互相干扰,常用分支命令如下:

| 命令 | 作用 | 示例 |
|---|---|---|
git branch |
查看本地分支(当前分支前带 ) | git branch |
git branch [分支名] |
创建新分支 | git branch feature/login |
git checkout [分支名] |
切换到指定分支 | git checkout feature/login |
git checkout -b [分支名] |
创建并切换到新分支 | git checkout -b bugfix/fix-error |
git merge [分支名] |
将指定分支合并到当前分支 | git master 分支执行 git merge feature/login |
git branch -d [分支名] |
删除已合并的分支 | git branch -d feature/login |
git branch -D [分支名] |
强制删除未合并的分支 | git branch -D feature/experiment |
开发中通常通过 main(或 master)分支作为稳定版本,develop 分支作为开发集成分支,功能分支从 develop 分出,开发完成后合并回 develop。
远程仓库操作
远程仓库(如 GitHub、GitLab)用于代码托管与团队协作,常用命令包括:
git remote -v:查看远程仓库地址(-v表示显示详细名称和 URL)。git push [远程仓库名] [分支名]:推送本地分支到远程仓库,如git push origin main。git pull [远程仓库名] [分支名]:拉取远程分支并合并到当前分支(相当于git fetch + git merge)。git fetch [远程仓库名]:拉取远程更新但不合并,需手动git merge。
若推送时冲突,需先 git pull 拉取远程修改,解决冲突后提交再推送。
撤销与回退操作
- 撤销工作区修改:
git checkout -- [文件名](仅未提交的修改)。 - 撤销暂存区修改:
git reset HEAD [文件名](将文件从暂存区移回工作区)。 - 撤销提交(保留修改):
git reset --soft [提交哈希],退回暂存区状态,可重新提交。 - 撤销提交并丢弃修改:
git reset --hard [提交哈希],直接回退到指定提交状态(危险操作,会丢失后续修改)。 - 撤销已推送的提交:使用
git revert [提交哈希],创建一个新提交来抵消指定提交的影响(安全,不会改变历史)。
标签管理
标签用于标记重要版本(如 v1.0.0),分为轻量标签(git tag [标签名])和附注标签(git tag -a [标签名] -m "说明"),推送标签到远程仓库需执行 git push origin [标签名],推送所有标签使用 git push origin --tags。
相关问答 FAQs
Q1:git pull 和 git fetch 有什么区别?
A:git fetch 仅从远程仓库拉取最新代码到本地,但不自动合并,需手动执行 git merge 来合并分支;git pull 则是 git fetch 和 git merge 的组合,拉取后自动合并当前分支。git fetch 更安全(可先检查变更),git pull 更便捷(直接合并)。
Q2:如何撤销已推送到远程仓库的提交?
A:推荐使用 git revert 命令,要撤销提交 abc123,执行 git revert abc123,此时会打开编辑器输入提交说明,保存后生成一个新提交抵消原提交的修改,git push origin [分支名] 推送即可,注意:git revert 不会删除历史记录,适合已推送的提交;若要删除本地提交且未推送,可用 git reset --hard。
