Git基础-核心概念与常用命令

Git 基础入门教程与常用命令详解

Git 是一个开源的分布式版本控制系统,由 Linus Torvalds 为管理 Linux 内核开发而创建。它旨在高效地处理从小型到大型项目的版本管理,其核心优势在于分布式架构:每个开发者的本地仓库都包含完整的项目历史,支持离线工作,并提供了极其灵活和强大的分支管理能力,这使得团队协作和版本追溯变得非常高效。

  1. Git 核心概念与文件状态

理解 Git 的工作原理,首先需要掌握其核心区域和文件的四种基本状态,这是所有操作的基础。

核心区域

概念 说明
工作区 (Working Directory) 用户直接看到和编辑的目录,即项目文件夹(不包括 .git 目录)。在这里进行文件的增删改。
暂存区 (Staging Area / Index) 一个介于工作区和仓库之间的缓存区域。通过 git add 命令,可以将工作区的特定更改"暂存"到这里,准备组成下一次提交。
本地仓库 (Local Repository) 位于项目根目录下的 .git 隐藏文件夹,存储了项目的所有元数据和对象数据库,即所有的提交历史。通过 git commit 命令将暂存区的内容永久保存至此。
远程仓库 (Remote Repository) 托管在网络服务器(如 GitHub、Gitee、GitLab)上的仓库,用于团队协作和备份。通过 git pushgit pull 与之同步。

文件生命周期状态

Git 中的文件在其生命周期中会处于以下四种状态之一,并通过命令在这些状态间转换:

状态 描述 所在区域
未跟踪 (Untracked) 新创建的文件,尚未被 Git 纳入版本管理。 工作区
已修改 (Modified) 已跟踪的文件在工作区中被修改,但尚未放入暂存区。 工作区
已暂存 (Staged) 已修改的文件通过 git add 被标记,准备在下次提交时纳入版本库。 暂存区
已提交 (Committed) 文件已安全地保存在本地版本库中,成为一个永久的快照。 本地仓库

状态转换流程是 Git 工作流的核心:

复制代码
工作区 (Untracked/Modified) -- `git add` --> 暂存区 (Staged) -- `git commit` --> 本地仓库 (Committed)
                                 ↑                                        |
                                 |________ `git checkout/reset` __________|
  1. Git 安装与初始配置

2.1 安装 Git

访问 Git 官方网站 下载对应操作系统(Windows, macOS, Linux)的安装包。安装过程通常只需保持默认选项。安装完成后,打开终端(或命令提示符、Git Bash)并输入以下命令验证:

bash 复制代码
git --version

如果显示类似 git version 2.xx.x 的信息,则表明安装成功。

2.2 初始全局配置

安装后首要任务是配置用户身份,因为每一次 Git 提交都会使用这些信息。

bash 复制代码
# 设置全局用户名和邮箱地址
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"

# 可选:设置默认的文本编辑器,如将默认编辑器改为 VS Code
git config --global core.editor "code --wait"

# 查看所有配置项
git config --list
# 查看特定配置项,如用户名
git config user.name

这些配置信息默认保存在用户主目录的 ~/.gitconfig 文件中。

  1. Git 常用命令详解

以下表格和代码示例涵盖了从创建仓库到日常维护的核心命令。

3.1 仓库初始化与克隆

命令 作用 示例与说明
git init 将当前目录初始化为一个新的 Git 仓库。 git init 执行后,当前目录下会生成一个 .git 子目录,所有仓库数据都存储于此。
git clone 克隆(下载)一个远程仓库到本地。 git clone https://github.com/username/repo.git 这会创建一个名为 repo 的目录,并自动设置远程地址为 origin

3.2 文件状态查看与提交操作

命令 作用 示例与说明
git status 查看工作区和暂存区的状态。这是最常用的命令之一。 git status 会清晰显示哪些文件被修改(红色)、哪些已暂存(绿色)、哪些未跟踪。
git add 将工作区的更改添加到暂存区。 git add readme.md 添加单个文件。 git add .git add -A 添加所有更改(包括新文件和删除)。
git commit 将暂存区的内容创建一个新的提交记录到本地仓库。 git commit -m "Fix: 修复了用户登录的bug" -m 参数后跟提交信息,应简洁明了地描述本次更改。
git commit -a 跳过暂存区,直接提交所有已跟踪文件的修改。 git commit -a -m "Update docs" 这相当于先执行 git add -u(更新所有已跟踪文件)再执行 git commit

3.3 查看历史与版本回退

命令 作用 示例与说明
git log 查看提交历史。 git log 显示完整的提交历史,包括哈希值、作者、日期和提交信息。 git log --oneline --graph 以简洁的单行和图形化方式查看,尤其适合查看分支合并历史。
git diff 查看文件的具体差异。 git diff 比较工作区暂存区 的差异。 git diff --staged 比较暂存区最新提交 的差异。 git diff HEAD~1 HEAD 比较最近两次提交的差异。
git reset 将当前分支的 HEAD 指针重置到指定的提交,用于版本回退。 git reset --soft HEAD~1 回退到上一个版本,但保留工作区和暂存区的所有修改。 git reset --mixed HEAD~1 (默认 ) 回退到上一个版本,保留工作区修改,但清空暂存区。 git reset --hard HEAD~1 (危险) 彻底回退到上一个版本,丢弃工作区和暂存区的所有修改。
git checkout 切换分支或恢复工作区文件。 git checkout main 切换到 main 分支。 git checkout -- file.txt 丢弃工作区中 file.txt 文件的修改,恢复到最近一次 git addgit commit 时的状态。
git restore (Git 2.23+ 新增) 更直观地恢复文件。 git restore file.txt 等同于 git checkout -- file.txtgit restore --staged file.txt 将文件从暂存区移回工作区(取消暂存)。

3.4 分支管理

Git 的分支是其标志性功能,创建和切换分支成本极低。

bash 复制代码
# 查看所有分支,当前分支前有 * 号标记
git branch

# 创建新分支
git branch feature-login

# 切换到指定分支
git checkout feature-login
# 或使用较新的 switch 命令(语义更清晰)
git switch feature-login

# 创建并立即切换到新分支
git checkout -b hotfix-bug
# 或
git switch -c hotfix-bug

# 将指定分支合并到当前分支
git merge feature-login
# 执行此命令前,通常需要先切换到主分支 (git checkout main)

# 删除已合并的分支
git branch -d feature-login
# 强制删除一个未合并的分支
git branch -D experimental-branch

3.5 远程仓库操作

命令 作用 示例与说明
git remote 管理远程仓库地址。 git remote -v 查看远程仓库的详细地址。 git remote add origin https://gitee.com/username/repo.git 添加一个名为 origin 的远程仓库。
git push 将本地分支的提交推送到远程仓库。 git push -u origin main 首次推送时,-u 参数建立本地 main 分支与远程 origin/main 的追踪关系,后续可直接用 git push
git pull 从远程仓库拉取更新并合并到当前分支。 git pull origin main 这相当于执行了 git fetch origin main(获取更新)和 git merge origin/main(合并到当前分支)两个操作。
git fetch 从远程仓库下载所有更新,但不自动合并。 git fetch origin 这将更新远程跟踪分支(如 origin/main),让你看到别人的工作进展,而不会影响你的工作区。

3.6 标签管理

标签用于标记重要的提交点,如版本发布 (v1.0.0)。

bash 复制代码
# 查看所有标签
git tag

# 在当前提交上创建一个轻量标签
git tag v1.0.0

# 创建一个带注解的标签
git tag -a v1.0.0 -m "Release version 1.0.0"

# 将标签推送到远程仓库
git push origin v1.0.0
# 推送所有标签
git push origin --tags
  1. 典型 Git 工作流示例

一个标准的个人或小型团队 Git 工作流如下:

  1. 准备阶段git clone <url> 获取项目代码,或 git init 初始化新项目。

  2. 开发阶段 :在 maindevelop 分支上进行日常开发。建议为每个新功能或修复创建独立分支:git checkout -b feature-xxx

  3. 暂存与提交 :完成一部分工作后,使用 git add . 暂存更改,然后 git commit -m "message" 提交到本地仓库。这个过程可以重复多次。

  4. 同步更新 :在推送前,先执行 git pull origin main 拉取远程最新代码,解决可能出现的合并冲突。

  5. 推送共享 :使用 git push origin feature-xxx 将本地分支推送到远程。

  6. 合并请求 :在代码托管平台(如 GitHub)上发起 Pull Request (PR),请求将 feature-xxx 分支合并到主分支。经过代码评审后完成合并。

  7. 清理分支 :远程分支合并后,删除本地和远程的临时分支:git branch -d feature-xxxgit push origin --delete feature-xxx

  8. 在 IDE 中使用 Git(以 IntelliJ IDEA 为例)

现代 IDE 提供了强大的图形化 Git 工具,极大提升了效率。

  • 仓库克隆与打开 :通过 File -> New -> Project from Version Control 直接输入 URL 克隆项目。
  • 状态可视化 :右侧边栏或底部栏的 Commit 工具窗口,以颜色(红/绿/蓝)清晰展示文件状态(修改、新增、冲突)。
  • 图形化提交 :在 Commit 窗口中勾选文件即可暂存,输入信息后点击 CommitCommit and Push 一键提交并推送。
  • 分支操作:IDEA 窗口右下角有分支名,点击可以快速查看所有分支、创建新分支、切换分支、合并分支。
  • 历史与差异查看 :在编辑器中右键文件,选择 Git -> Show History 可以图形化查看该文件的修改历史,并方便地对比不同版本差异。
  • 冲突解决 :当 git pullgit merge 产生冲突时,IDEA 会弹出可视化合并工具,让你清晰地对比"你的代码"、"他人代码"和"合并结果",并可以方便地选择保留哪一部分或进行手动编辑。

掌握上述基础命令和概念是高效使用 Git 的关键。建议在实战中结合 git status 命令反复观察文件状态的变化,从而深入理解 Git 的工作机制。对于团队协作,熟悉基于功能分支的工作流和 Pull Request 流程至关重要。


参考来源

相关推荐
夜珀2 小时前
Git基础修炼手册:在AtomGit上玩转版本控制
git
golang学习记3 小时前
Zed IDE官宣新招:Git Graph 正式支持!
ide·git
要记得喝水3 小时前
适用于 Git Bash 的脚本,批量提交和推送多个仓库的修改
git·elasticsearch·bash
AI_Claude_code3 小时前
专栏导论:开源项目贡献的价值与Git工作流全景图
git·开源
never forget shyang3 小时前
CCS20.2.0使用教程
c语言·git·单片机
lifewange12 小时前
常用的Git命令有哪些?
git
无限进步_13 小时前
【C++】电话号码的字母组合:从有限处理到通用解法
开发语言·c++·ide·windows·git·github·visual studio
C++ 老炮儿的技术栈13 小时前
GCC编译时无法向/tmp 目录写入临时汇编文件,因为设备空间不足,解决
linux·运维·开发语言·汇编·c++·git·qt
英俊潇洒美少年13 小时前
Git 常用命令速查表(前端开发专属版)
git