引言

Git是最流行的版本控制系统。本文介绍Git的核心命令和实战技巧。

一、基础命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 初始化仓库
git init

# 克隆仓库
git clone https://github.com/user/repo.git

# 查看状态
git status

# 添加文件
git add file.txt
git add .

# 提交
git commit -m "commit message"

# 查看历史
git log
git log --oneline --graph

# 查看差异
git diff
git diff HEAD

二、分支管理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 创建分支
git branch feature

# 切换分支
git checkout feature
git switch feature # 新命令

# 创建并切换
git checkout -b feature
git switch -c feature

# 查看分支
git branch
git branch -a # 包括远程分支

# 合并分支
git checkout main
git merge feature

# 删除分支
git branch -d feature
git branch -D feature # 强制删除

三、远程操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 查看远程仓库
git remote -v

# 添加远程仓库
git remote add origin https://github.com/user/repo.git

# 拉取代码
git pull origin main

# 推送代码
git push origin main

# 推送新分支
git push -u origin feature

# 删除远程分支
git push origin --delete feature

四、撤销操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 撤销工作区修改
git checkout -- file.txt
git restore file.txt

# 撤销暂存区
git reset HEAD file.txt
git restore --staged file.txt

# 撤销提交
git reset --soft HEAD^ # 保留更改
git reset --mixed HEAD^ # 默认,取消暂存
git reset --hard HEAD^ # 丢弃更改

# 回退到指定版本
git reset --hard commit_id

# 撤销已推送的提交
git revert commit_id

五、冲突解决

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 合并时出现冲突
git merge feature
# Auto-merging file.txt
# CONFLICT (content): Merge conflict in file.txt

# 查看冲突文件
git status

# 手动解决冲突
# <<<<<<< HEAD
# 当前分支的内容
# =======
# 要合并的分支的内容
# >>>>>>> feature

# 标记已解决
git add file.txt

# 完成合并
git commit -m "Merge feature branch"

六、工作流

6.1 Git Flow

1
2
3
4
5
6
7
8
# 主分支
main/master # 生产环境
develop # 开发环境

# 辅助分支
feature/* # 功能开发
release/* # 发布准备
hotfix/* # 紧急修复

6.2 GitHub Flow

1
2
3
4
5
6
1. 从main创建分支
2. 提交更改
3. 创建Pull Request
4. 代码审查
5. 合并到main
6. 部署

七、高级技巧

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 暂存工作区
git stash
git stash list
git stash pop
git stash apply

# 变基
git rebase main
git rebase -i HEAD~3 # 交互式变基

# 挑选提交
git cherry-pick commit_id

# 标签
git tag v1.0.0
git push origin v1.0.0

# 子模块
git submodule add https://github.com/user/repo.git
git submodule update --init

总结

Git核心:

  1. 基础命令:add、commit、push、pull
  2. 分支管理:创建、切换、合并
  3. 冲突解决:识别和处理冲突
  4. 工作流:团队协作规范

参考资料