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

相关推荐
70asunflower3 小时前
GitHub 从 0 到 1 使用教程
github·从0到1
yeziyfx12 小时前
vs code 使用Git拉取/克隆(clone)仓库项目
git·vscode
最贪吃的虎20 小时前
GitHub推送又超时了?试试SSH
运维·ssh·github
smachao20 小时前
Redis Desktop Manager(Redis可视化工具)安装及使用详细教程
redis·git·bootstrap
szcsun521 小时前
git的常用命令
git
jian1105821 小时前
android studio 解决git用户名和用户邮箱不一致的问题
git
jian110581 天前
Mac git配置账号和邮箱,可以修改
git·macos
笨笨饿1 天前
博客目录框架
c语言·开发语言·arm开发·git·嵌入式硬件·神经网络·编辑器