Git命令行是开发者日常工作中不可或缺的工具,它通过简洁高效的命令管理代码版本、协作开发以及追踪项目变更,要熟练使用Git命令行,需要从基础配置、仓库操作、分支管理、代码合并与冲突解决、远程仓库交互等多个维度系统学习,以下将详细介绍Git命令行的核心使用方法,帮助开发者快速上手并深入应用。

基础配置与环境初始化
在使用Git命令行前,需先进行用户配置,确保每次提交操作都有明确的身份标识,通过以下命令设置全局用户名和邮箱:
git config --global user.name "Your Name" git config --global user.email "your.email@example.com"
若需针对特定项目配置,可去掉--global参数,改为项目级配置,还可配置默认分支名、差异工具等个性化选项,
git config --global init.defaultBranch main git config --global diff.tool vscode
本地仓库操作
仓库初始化与克隆
- 初始化新仓库:在项目目录下执行
git init,会在当前目录创建隐藏的.git文件夹,初始化一个空的Git仓库。 - 克隆远程仓库:通过
git clone [仓库URL]命令将远程仓库完整复制到本地,例如git clone https://github.com/user/repo.git。
文件状态与暂存管理
- 查看状态:
git status显示工作区、暂存区的文件状态,包括未跟踪、已修改、已暂存等分类。 - 添加文件到暂存区:
git add [文件名]:添加指定文件。git add .或git add -A:添加所有修改和未跟踪的文件。
- 撤销暂存:
git reset [文件名]将已暂存的文件移出暂存区,恢复到工作区。 - 提交更改:
git commit -m "提交说明"将暂存区内容提交到本地仓库,-m参数后跟提交信息描述。
历史记录查看
git log:查看提交历史,显示每次提交的哈希值、作者、时间及提交信息。git log --oneline:以精简格式显示提交历史,每行仅显示提交哈希的前几位和提交信息。git log --graph --all:以图形化方式展示所有分支的提交历史,便于理解分支合并关系。
分支管理
分支是Git的核心功能之一,允许开发者并行开发不同功能,避免相互干扰。
分支基本操作
- 创建分支:
git branch [分支名],例如git branch feature-login。 - 切换分支:
git checkout [分支名],或使用git switch [分支名](Git 2.23+推荐)。 - 创建并切换分支:
git checkout -b [分支名]或git switch -c [分支名]。 - 查看分支:
git branch列出本地所有分支,-r参数查看远程分支,-a查看所有分支。
分支合并与删除
- 合并分支:切换到目标分支(如
main),执行git merge [源分支名],将源分支的提交合并到当前分支。 - 删除分支:
git branch -d [分支名]删除已合并的分支,-D强制删除未合并的分支。
变基操作
变基(Rebase)是通过重新提交历史来线性化分支历史,例如将feature分支的提交变基到main分支:

git checkout feature git rebase main
变基后,feature分支的提交会基于main的最新提交重新生成,历史更整洁,但需注意变基会修改提交历史,不建议用于已共享的分支。
远程仓库交互
远程仓库实现本地代码与云端(如GitHub、GitLab)的同步。
远程仓库管理
- 查看远程仓库:
git remote -v显示远程仓库名称及对应的推送/拉取URL。 - 添加远程仓库:
git remote add [别名] [URL],例如git remote add origin https://github.com/user/repo.git。 - 重命名/删除远程仓库:
git remote rename [旧别名] [新别名]或git remote remove [别名]。
推送与拉取代码
- 推送代码:
git push [远程仓库名] [本地分支名],例如git push origin main,首次推送可能需要-u参数建立上游分支关联。 - 拉取代码:
git pull [远程仓库名] [远程分支名],相当于git fetch+git merge,从远程仓库拉取最新代码并合并到当前分支。 - 获取更新:
git fetch [远程仓库名]仅拉取远程仓库更新,不自动合并,需手动执行git merge。
标签管理
标签用于标记重要节点(如版本发布),分为轻量标签和附注标签。
- 创建标签:
- 轻量标签:
git tag [标签名],基于最新提交创建。 - 附注标签:
git tag -a [标签名] -m "标签说明",包含标签者、日期等信息。
- 轻量标签:
- 推送标签:
git push origin [标签名]推送单个标签,git push origin --tags推送所有未推送的标签。 - 查看标签:
git tag列出所有标签,git show [标签名]查看标签详情。
撤销与回退
- 撤销工作区修改:
git checkout -- [文件名]丢弃工作区的未暂存修改。 - 撤销暂存区修改:
git reset HEAD [文件名]将文件从暂存区移回工作区。 - 回退提交:
git reset --soft [提交哈希]:仅撤销提交,保留修改在暂存区。git reset --hard [提交哈希]:彻底撤销提交并丢弃所有修改(慎用)。
- 撤销已推送的提交:使用
git revert [提交哈希]创建一个新的提交来抵消指定提交的影响,避免修改历史。
冲突解决
当多分支对同一文件的同一部分进行修改并合并时,会产生冲突,冲突文件会包含标记:

<<<<<<< HEAD=======>>>>>>> 分支名
解决冲突的步骤:
- 手动编辑冲突文件,删除标记并保留正确内容。
- 执行
git add [文件名]标记冲突已解决。 - 提交合并:
git commit完成合并操作。
常用命令速查表
| 功能分类 | 命令示例 | 说明 |
|---|---|---|
| 仓库初始化 | git init |
初始化本地仓库 |
| 克隆仓库 | git clone [URL] |
克隆远程仓库到本地 |
| 查看状态 | git status |
查看工作区和暂存区状态 |
| 添加文件 | git add . |
添加所有修改到暂存区 |
| 提交更改 | git commit -m "说明" |
提交暂存区内容到本地仓库 |
| 查看历史 | git log --oneline |
精简显示提交历史 |
| 创建分支 | git branch [分支名] |
创建新分支 |
| 切换分支 | git checkout [分支名] |
切换到指定分支 |
| 合并分支 | git merge [分支名] |
合并指定分支到当前分支 |
| 推送代码 | git push origin [分支名] |
推送本地分支到远程仓库 |
| 拉取代码 | git pull origin [分支名] |
拉取远程仓库代码并合并 |
| 创建标签 | git tag -a v1.0 -m "版本1.0" |
创建附注标签 |
| 撤销提交 | git reset --hard [哈希] |
硬重置到指定提交,丢弃修改 |
相关问答FAQs
Q1: 如何撤销本地已提交的代码?
A1: 根据场景选择不同方法:
- 若提交未推送到远程仓库,使用
git reset --hard HEAD~1(撤销最后一次提交并丢弃修改)或git reset --soft HEAD~1(撤销提交但保留修改在暂存区)。 - 若提交已推送到远程仓库,使用
git revert [提交哈希]创建新提交抵消修改,避免历史记录混乱。
Q2: 合并分支时出现冲突如何解决?
A2: 解决冲突的步骤如下:
- 执行
git status查看冲突文件,冲突文件会被标记为“both modified”。 - 手动打开冲突文件,删除
<<<<<<< HEAD、、>>>>>>> 分支名等标记,保留需要的代码内容。 - 保存文件后,执行
git add [文件名]标记冲突已解决。 - 执行
git commit完成合并提交,冲突解决完毕。
