1. Git 核心概念
2. Git 工作流程
git add . → git commit -m "消息" → git push
3. Git 分支管理
git branch 分支名称 → git checkout 分支名称 或一步完成:git checkout -b 分支名称
4. 分支合并:Merge vs Rebase
合并:git merge 分支名称 变基:git rebase 分支名称
注意: Rebase 会改变提交历史,不要在已共享的分支上使用!
5. 远程仓库操作
克隆:git clone 仓库地址 拉取:git fetch 远程名称 / git pull 远程名称 分支名称 推送:git push 远程名称 分支名称
6. 撤销与恢复操作
撤销工作区修改:git checkout -- 文件名
撤销暂存区:git reset HEAD 文件名
修改最后一次提交:git commit --amend
回退到特定版本:git reset --hard 提交ID
补充:Git Revert
git revert 是一种安全的"撤销"提交的方法。与 reset 不同,revert 不会删除历史,而是通过创建一个新的提交来"反做"特定提交的更改。
直观解释
想象以下场景:
- 你有一个文件,其中包含文本 "Hello"
- 提交 A:添加了文本,变成 "Hello World"
- 提交 B:又添加了文本,变成 "Hello World!"
- 提交 C:修改为 "Hello Amazing World!"
现在,如果你想撤销提交 C 做的更改,但保留提交 A 和 B:
- 使用
git reset会回到提交 B,但会丢失提交 C 的历史记录 - 使用
git revert则会创建一个新的提交 D,将内容恢复为 "Hello World!",但提交 C 仍然保留在历史中
提交历史: A --- B --- C (现在在这里)
^
HEAD
执行 git revert C 后:
提交历史: A --- B --- C --- D (现在在这里)
^
HEAD
其中 D 是"反做"C的新提交
使用场景
git revert 特别适合以下情况:
- 公共分支修复:当你在已推送到远程的分支上发现错误时
- 保持历史完整:当你需要记录错误并明确标记其修复过程时
- 团队协作:当其他开发者可能已经基于该错误提交继续开发时