Git 使用指南

第一部分:核心理念与基础

1.1 什么是Git?为什么它如此重要?

定义:Git是一个分布式版本控制系统。它像一台"时光机",能记录你项目文件的每一次变更(谁、在什么时候、改了什么内容),并让你能随时回到任何一个历史版本。

核心价值:

版本回溯:轻松找回误删的代码或回退到稳定版本。

团队协作:多人并行开发同一项目,高效合并彼此的工作成果。

实验安全:创建独立的"实验分支"尝试新功能,失败了也不影响主线代码。

1.2 三个核心区域(理解此模型是掌握Git的关键)

想象一下你的工作区有三个区域:

1.工作区:你电脑里能看到的项目文件夹,你在这里直接编辑文件。

2.暂存区:一个临时区域,用于准备下一次要提交的修改。你可以有选择性地将工作区的改动加入这里。

3.本地仓库:保存项目完整历史记录和所有分支的地方。当你"提交"时,暂存区的快照就被永久保存到这个仓库里。
流程:工作区 -> git add -> 暂存区 -> git commit -> 本地仓库

1.3 初始化与配置

bash 复制代码
# 全局配置(只需做一次)
git config --global user.name "你的姓名"      # 提交时显示的名字
git config --global user.email "你的邮箱"    # 提交时显示的邮箱

# 初始化一个新仓库
cd /你的项目目录
git init                 # 在当前目录创建.git隐藏文件夹,开始Git管理

第二部分:日常基础操作

2.1 获取项目与状态查看

bash 复制代码
# 克隆一个已有的远程仓库到本地
git clone <远程仓库URL>

# 查看仓库状态(最常用命令之一!)
git status

# 查看简洁状态
git status -s
#  ??  新文件(未跟踪)
#  A   新文件已暂存
#  M  文件被修改(红色在工作区,绿色在暂存区)

2.2 添加与提交

bash 复制代码
# 添加单个文件到暂存区
git add <文件名>

# 添加当前目录下所有改动的文件(新文件、修改、删除)到暂存区
git add .

# 提交暂存区的快照到本地仓库,并附上描述信息
git commit -m "提交信息:清晰地描述你做了什么"
# 好的提交信息示例:"修复用户登录时的空指针异常"
# 差的提交信息示例:"更新"

2.3 查看历史与差异

bash 复制代码
# 查看提交历史
git log
git log --oneline --graph --all   # 图形化简洁视图,非常推荐!

# 查看工作区与最后一次提交的差异(未暂存的修改)
git diff

# 查看暂存区与最后一次提交的差异(已暂存,将要提交的修改)
git diff --staged

第三部分:分支与合并(团队协作的核心)

分支是Git最强大的功能,它允许你从主线上分离出来,进行独立开发。

3.1 分支操作

bash 复制代码
# 列出所有本地分支,当前分支前有*号
git branch

# 创建一个新分支
git branch <分支名>

# 切换到另一个分支
git checkout <分支名>
# 或使用更新的命令
git switch <分支名>

# 创建并立即切换到新分支(最常用)
git checkout -b <分支名>
# 或
git switch -c <分支名>

# 删除一个已合并的分支
git branch -d <分支名>

3.2 合并分支

假设你在 feature-login 分支开发完毕,需要合并回 main 分支:

bash 复制代码
# 1. 先切换到目标分支(main)
git checkout main

# 2. 将 feature-login 分支合并到当前分支(main)
git merge feature-login

# 3. (可选) 删除已合并的功能分支
git branch -d feature-login

3.3 解决合并冲突

当Git无法自动合并时(比如两个分支修改了同一文件的同一部分),会产生冲突。

1.Git会标记冲突文件,用 git status 查看。

2.打开冲突文件,你会看到类似这样的标记:

bash 复制代码
<<<<<<< HEAD
// 当前分支(main)的代码
=======
//  incoming change(feature-login)分支的代码
>>>>>>> feature-login

3.手动编辑 文件,选择保留哪部分代码,或进行整合,然后删除所有冲突标记(<<<<<<<, =======, >>>>>>>)。

4.git add <冲突文件> 将解决后的文件标记为已解决。

5.git commit 完成合并提交。

第四部分:远程仓库协作

4.1 连接远程仓库**

bash 复制代码
# 查看已配置的远程仓库
git remote -v

# 添加一个新的远程仓库(通常命名为 origin)
git remote add origin <远程仓库URL>

# 从远程仓库获取最新数据(但不合并)
git fetch origin

# 拉取远程分支并与当前本地分支合并(= fetch + merge)
git pull origin main
# 在团队协作中,开始工作前先 pull 通常是个好习惯。

4.2 推送与拉取

bash 复制代码
# 将本地分支的提交推送到远程仓库
git push origin main   # 推送本地main分支到远程origin仓库

# 推送并设置上游分支(之后可以直接用 git push)
git push -u origin main

# 从远程仓库拉取并尝试自动合并(如果基于该分支开发)
git pull origin main

4.3 团队协作流程(基于Git Flow简化版)
1.克隆:git clone <主仓库URL>
2.更新:git pull origin main (确保你的 main 分支是最新)
3.开新分支:git checkout -b feature/your-feature-name (从最新的 main 创建)
4.开发与提交:在你的分支上反复进行 修改 -> git add -> git commit
5.保持同步:定期 git pull origin main 到你的功能分支,解决可能的冲突。
6.推送分支:git push origin feature/your-feature-name
7.发起合并请求:在GitHub/GitLab等平台上,创建一个 Pull Request / Merge Request,请求将你的功能分支合并回 main。
8.代码审查与合并:团队成员评审你的代码,通过后由管理员合并到 main 分支。

第五部分:高级技巧与撤销操作

5.1 撤销与回退("后悔药")

bash 复制代码
# 1. 撤销工作区的修改(危险!会丢失未暂存的修改)
git checkout -- <文件名>

# 2. 将文件从暂存区撤回至工作区(保留修改)
git restore --staged <文件名>
# 或旧命令:git reset HEAD <文件名>

# 3. 修改最后一次提交(刚提交完发现有错误)
git commit --amend -m "新的提交信息"   # 修改提交信息
# 或 git add 遗漏的文件后,执行 git commit --amend

# 4. 回退到历史版本(危险操作!会改变历史)
git log --oneline   # 找到你想回退到的版本号(前7位)
git reset --hard <版本号>   # 强制回退到该版本,丢弃之后的所有提交
# 谨慎使用!如果已经推送到了远程,需要强制推送:git push -f origin main

5.2 临时保存工作现场

bash 复制代码
# 当你正在一个分支上工作,突然需要切换分支处理紧急任务,但不想提交半成品代码:
git stash   # 临时保存当前工作区的修改

# 切换到其他分支处理完任务后,切回原分支:
git stash pop   # 恢复最近一次的临时保存

5.3 标签

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

bash 复制代码
git tag -a v1.0 -m "版本1.0发布"   # 创建带注释的标签
git tag   # 列出所有标签
git push origin v1.0   # 推送特定标签到远程

第六部分:最佳实践与工作流

1.提交频率:小步快跑。完成一个逻辑上的小改动就提交一次,便于回溯和理解历史。

2.提交信息:清晰、简洁、有意义。第一行是摘要(50字符内),空一行后写详细说明。

3.分支策略:

main:始终保持稳定、可部署。

feature/:用于开发新功能。
hotfix/
:用于紧急修复线上bug。

4.在推送前:先 git pull --rebase origin main,将你的提交变基到最新主干上,保持历史线性整洁。

5.不要提交什么:使用 .gitignore 文件排除不需要版本控制的文件,如:

bash 复制代码
# .gitignore 示例
node_modules/
.env
*.log
.DS_Store

速查表

场景 命令

开始 git clone, git init

日常 git status, git add ., git commit -m "...", git push

同步 git pull, git fetch

分支 git branch, git checkout -b, git merge

查看 git log --oneline --graph, git diff

撤销 git restore, git commit --amend, git reset --hard

临时 git stash, git stash pop

相关推荐
SiYuanFeng9 小时前
新手学Git:如何把本地 Git 项目上传到 GitHub
git·github
前端若水10 小时前
git回退并合并分支操作
git
桌面运维家13 小时前
中小学IDV云桌面vDisk挂载部署方案
github
MXN_小南学前端15 小时前
Vue3 + Spring Boot 工单系统实战:用户反馈和客服处理的完整闭环(提供gitHub仓库地址)
前端·javascript·spring boot·后端·开源·github
程序员鱼皮15 小时前
Git WorkTree 是什么?凭什么能让 AI 编程效率翻倍?
git·ai·程序员·编程·ai编程
lentoo-16 小时前
GitHub 暂停了 Copilot 付费注册
github·copilot
一颗青果16 小时前
Cookie 与 Session 超详细讲解
服务器·前端·github
懵逼的小黑子18 小时前
git与远程仓库创建连接
git
skywalk816318 小时前
为aicomm项目添加CI/CD 配置 让github帮我们自动测试
ci/cd·github
Yunzenn18 小时前
零基础复现Claude Code(五):终端篇——赋予执行命令的超能力
面试·github