☰
Git版本控制入门与20+常用命令详解
2026/10/26 21:55:42 网站建设 项目流程

1. Git入门:为什么每个开发者都需要版本控制

刚接触编程那会儿,我最头疼的就是代码管理。有一次不小心删错了文件,花了两天时间才手动恢复。直到遇到Git,才发现原来代码版本管理可以这么高效。Git作为目前最流行的分布式版本控制系统,已经成为开发者必备的核心技能之一。

对于后端开发者而言,Git尤为重要。无论是个人项目还是团队协作,Git都能帮你:

  • 完整记录每次代码变更
  • 轻松回溯到任意历史版本
  • 高效管理分支和合并
  • 与团队成员无缝协作

这个教程专为后端新手设计,我会从最基础的安装配置讲起,逐步深入到日常开发中最常用的20+个Git命令,最后附上精心整理的速查表。学完这些,你就能应对90%的日常开发场景。

2. Git环境搭建与基础配置

2.1 安装Git的三种方式

根据操作系统不同,Git的安装方式也有所区别:

  1. Windows系统:

    • 官网下载安装包(推荐使用64-bit Git for Windows Setup)
    • 安装时勾选"Use Git from Git Bash only"(保持环境纯净)
    • 建议添加Git到PATH环境变量(方便在任意位置使用)
  2. macOS系统:

    • 最简单的方式是通过Homebrew:brew install git
    • 也可以下载官方安装包
  3. Linux系统:

    • Debian/Ubuntu:sudo apt-get install git
    • CentOS/RHEL:sudo yum install git

安装完成后,在终端运行git --version验证是否成功。

2.2 必须做的初始配置

安装完Git后,第一件事就是配置用户信息:

git config --global user.name "你的名字" git config --global user.email "你的邮箱"

这个信息会记录在你的每次提交中。建议使用与GitHub/GitLab相同的邮箱,方便平台关联你的提交。

其他实用配置:

# 设置默认编辑器为VSCode git config --global core.editor "code --wait" # 让命令行输出带颜色 git config --global color.ui auto # 设置默认分支名为main(替代原来的master) git config --global init.defaultBranch main

提示:所有配置都保存在~/.gitconfig文件中,可以直接编辑这个文件修改配置。

3. Git核心概念与工作流程

3.1 Git的三大区域

理解Git的工作机制,首先要掌握三个核心概念:

  1. 工作目录(Working Directory):你实际操作的文件夹,在这里修改文件
  2. 暂存区(Staging Area):准备提交的变更临时存放区
  3. 仓库(Repository):存储项目完整历史和元数据的数据库

典型的工作流程是: 修改文件 → 添加到暂存区 → 提交到仓库

3.2 Git文件生命周期

文件在Git中的状态变化:

  • 未跟踪(Untracked):新创建的文件,Git尚未开始跟踪
  • 已修改(Modified):已跟踪文件被修改但未暂存
  • 已暂存(Staged):修改已添加到暂存区,准备提交
  • 已提交(Committed):变更已永久存储在本地仓库

使用git status可以查看当前文件状态,这是最常用的命令之一。

4. 日常开发必备Git命令详解

4.1 仓库初始化与克隆

创建新仓库:

mkdir my-project cd my-project git init

这会在当前目录创建.git子目录,包含所有仓库数据。

克隆现有仓库:

git clone https://github.com/user/repo.git git clone https://github.com/user/repo.git my-folder # 指定本地目录名

4.2 基础工作流命令

  1. 查看状态:

    git status git status -s # 简洁版输出
  2. 添加文件到暂存区:

    git add file.txt # 添加单个文件 git add . # 添加所有变更 git add *.js # 添加所有js文件
  3. 提交变更:

    git commit -m "描述性提交信息" git commit -am "描述信息" # 跳过git add步骤(仅对已跟踪文件有效)

    提交信息规范:

    • 首行不超过50字符的简要说明
    • 空一行后写详细说明(如果需要)
    • 使用现在时态、命令式语气(如"Fix bug"而非"Fixed bug")

4.3 查看历史与差异

  1. 查看提交历史:

    git log git log --oneline # 简洁版 git log --graph --all --decorate # 可视化分支 git log -p file.txt # 查看特定文件历史
  2. 查看变更内容:

    git diff # 工作目录与暂存区的差异 git diff --staged # 暂存区与最新提交的差异 git diff HEAD~3 HEAD # 比较两个提交间的差异

4.4 撤销与回退

  1. 撤销工作目录修改:

    git checkout -- file.txt # 丢弃指定文件的修改 git restore file.txt # Git 2.23+推荐方式
  2. 从暂存区移除文件:

    git reset HEAD file.txt git restore --staged file.txt # Git 2.23+推荐方式
  3. 修改最后一次提交:

    git commit --amend # 修改提交信息或内容
  4. 回退到历史版本:

    git reset --hard HEAD~3 # 回退3个提交(慎用!会丢失工作) git revert HEAD # 创建新提交来撤销之前的变更(更安全)

4.5 分支管理

  1. 创建与切换分支:

    git branch feature-x # 创建分支 git checkout feature-x # 切换分支 git checkout -b feature-x # 创建并切换(常用)
  2. 合并分支:

    git checkout main git merge feature-x
  3. 解决冲突: 当合并遇到冲突时:

    • 打开冲突文件,查找<<<<<<<标记
    • 手动修改为想要保留的内容
    • 删除冲突标记
    • 执行git add和git commit完成合并
  4. 删除分支:

    git branch -d feature-x # 合并后删除 git branch -D feature-x # 强制删除未合并分支

4.6 远程仓库协作

  1. 添加远程仓库:

    git remote add origin https://github.com/user/repo.git
  2. 推送更改:

    git push -u origin main # 首次推送设置上游分支 git push # 之后简化推送
  3. 拉取更新:

    git pull # 相当于git fetch + git merge git fetch # 只获取远程变更不合并
  4. 查看远程信息:

    git remote -v # 查看远程仓库 git branch -r # 查看远程分支 git branch -a # 查看所有分支

5. Git高级技巧与最佳实践

5.1 使用.gitignore文件

在项目根目录创建.gitignore文件,列出不想跟踪的文件模式:

# 忽略所有.log文件 *.log # 忽略node_modules目录 node_modules/ # 但保留重要的.log文件 !important.log

常见需要忽略的内容:

  • 依赖目录(node_modules, vendor)
  • 构建产物(dist, build)
  • 编辑器配置文件(.vscode, .idea)
  • 系统文件(.DS_Store, thumbs.db)

5.2 储藏临时变更

当需要切换分支但不想提交当前修改时:

git stash # 储藏当前修改 git stash list # 查看储藏列表 git stash apply # 恢复最近储藏 git stash pop # 恢复并删除储藏 git stash drop # 删除储藏

5.3 使用标签标记版本

git tag v1.0.0 # 轻量标签 git tag -a v1.0.0 -m "Release version 1.0.0" # 附注标签 git push origin v1.0.0 # 推送标签到远程

5.4 交互式变基整理提交历史

git rebase -i HEAD~5 # 修改最近5个提交

在交互界面可以:

  • 重新排序提交
  • 合并多个提交(squash)
  • 修改提交信息(reword)
  • 拆分提交(edit)

注意:只对尚未推送的提交使用变基,已共享的提交不要变基。

6. Git常用命令速查表

6.1 基础命令速查

命令描述
git init初始化新仓库
git clone <url>克隆远程仓库
git add <file>添加文件到暂存区
git commit -m "msg"提交变更
git status查看当前状态
git log查看提交历史

6.2 分支与合并

命令描述
git branch列出所有分支
git checkout -b <branch>创建并切换分支
git merge <branch>合并指定分支到当前分支
git rebase <branch>变基当前分支到指定分支

6.3 远程协作

命令描述
git remote add <name> <url>添加远程仓库
git push -u <remote> <branch>推送分支到远程
git pull拉取远程更新
git fetch获取远程变更但不合并

6.4 撤销与回退

命令描述
git restore <file>撤销工作目录修改
git restore --staged <file>从暂存区移除文件
git commit --amend修改最后一次提交
git reset --hard <commit>回退到指定提交

7. 常见问题与解决方案

7.1 提交了错误内容怎么办?

场景:不小心提交了敏感信息或错误文件。

解决方案:

  1. 如果是最近一次提交:

    git commit --amend # 修改提交 git push -f # 强制推送(仅限个人分支)
  2. 如果是历史提交:

    git rebase -i HEAD~5 # 找到要修改的提交 # 将pick改为edit # 修改文件后 git add . git commit --amend git rebase --continue

警告:强制推送会重写历史,确保没有其他人基于这个分支工作。

7.2 合并冲突如何解决?

场景:git merge或git pull时出现冲突。

解决步骤:

  1. 运行git status查看冲突文件
  2. 打开冲突文件,查找<<<<<<<标记
  3. 手动决定保留哪些内容
  4. 删除冲突标记
  5. 添加解决后的文件:git add <file>
  6. 完成合并:git commit

7.3 如何找回删除的分支或提交?

场景:不小心删除了分支或重置了提交。

解决方案:

  1. 使用git reflog查看所有操作历史
  2. 找到删除前的提交哈希
  3. 基于该哈希创建新分支:
    git branch recovered-branch <hash>

7.4 大文件误提交如何处理?

场景:不小心提交了大文件(如视频、数据集),导致仓库臃肿。

解决方案:

  1. 使用BFG Repo-Cleaner或git filter-branch移除历史中的大文件
  2. 强制推送清理后的仓库
  3. 在.gitignore中添加大文件模式
  4. 团队成员需要重新克隆仓库

提示:考虑使用Git LFS(Large File Storage)管理大文件。

8. Git最佳实践总结

  1. 提交粒度要小:每次提交只解决一个问题,便于回退和代码审查
  2. 编写有意义的提交信息:清晰说明为什么修改,而非只是改了啥
  3. 频繁提交,定期推送:避免本地积压大量未推送提交
  4. 使用特性分支工作流:每个新功能或修复创建独立分支
  5. 定期拉取上游变更:减少合并冲突的可能性
  6. 善用.gitignore:从一开始就忽略不需要版本控制的文件
  7. 不要重写已共享的历史:避免对已推送的提交使用rebase -i或reset

刚开始使用Git时可能会觉得复杂,但坚持几周后就会变得自然。我建议每天花10分钟练习Git命令,很快就能熟练掌握。遇到问题时,记住Git几乎总能找回丢失的内容——只要还没执行git gc(垃圾回收)。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询