1. Git 的基础知识
- 版本控制: 版本控制系统帮助开发者记录代码的历史版本,管理和跟踪代码的更改。
- 分布式系统: Git 是分布式的,这意味着每个开发者的工作目录都是一个完整的代码库,包括完整的历史记录。
- 快照而非差异: Git 通过保存每次提交的快照来管理代码,而非仅仅记录文件的差异。
2. Git 的安装与配置
-
安装 Git: Git 可以在 Git 官方网站 下载并安装,支持 Windows、macOS 和 Linux。
# 安装 Git (Linux) sudo apt-get install git # 安装 Git (MacOS) brew install git
-
初始配置: 安装完成后,通过以下命令配置用户名和邮箱,这些信息将记录在每次提交中。
git config --global user.name "Your Name" git config --global user.email "your.email@example.com"
-
查看配置信息:
git config --list
3. Git 基本操作
3.1 初始化和克隆仓库
-
初始化新仓库: 在现有项目目录中初始化 Git 仓库。
git init
-
克隆现有仓库: 从远程仓库克隆代码到本地。
git clone https://github.com/username/repository.git
3.2 基本文件操作
-
查看文件状态: 查看当前目录下文件的状态,显示已修改但未提交的文件。
git status
-
添加文件到暂存区: 将修改的文件添加到暂存区以备提交。
git add filename
添加所有修改的文件:
git add .
-
提交更改: 将暂存区的修改提交到本地仓库。
git commit -m "Your commit message"
-
查看提交历史: 查看项目的提交历史记录。
git log
3.3 分支操作
-
创建新分支: 创建一个新分支以独立开发新功能或修复 Bug。
git branch new-branch
-
切换分支: 切换到其他分支。
git checkout new-branch
-
创建并切换分支: 创建新分支并立即切换过去。
git checkout -b new-branch
-
合并分支: 将其他分支的更改合并到当前分支。
git merge branch-name
-
删除分支: 删除本地分支。
git branch -d branch-name
3.4 远程操作
-
添加远程仓库: 将远程仓库与本地仓库关联。
git remote add origin https://github.com/username/repository.git
-
推送到远程仓库: 将本地分支的更改推送到远程仓库。
git push origin branch-name
-
拉取远程更新: 从远程仓库获取最新的更新并与本地分支合并。
git pull origin branch-name
3.5 撤销更改
-
撤销文件修改: 恢复文件到最后一次提交的状态。
git checkout -- filename
-
取消暂存的文件: 将暂存区的文件移回工作区。
git reset HEAD filename
-
撤销提交: 撤销最近一次提交,但保留工作目录的更改。
git reset --soft HEAD~1
4. Git 高级用法
-
交互式 Rebase: 清理提交历史、修改提交顺序、合并提交。
git rebase -i HEAD~n
-
Stash 暂存: 暂时保存当前的工作目录和暂存区的修改。
git stash git stash pop # 恢复保存的修改
-
子模块 (Submodule): 在一个 Git 仓库中包含另一个 Git 仓库。
git submodule add https://github.com/username/submodule-repo.git
-
Git Hooks: 在特定的 Git 操作前后执行自定义脚本,常用于自动化任务如代码检查、自动部署等。
# Example: .git/hooks/pre-commit
5. 最佳实践
- 频繁提交: 小而频繁的提交更有助于追踪问题,并方便在需要时回滚。
- 有意义的提交信息: 编写清晰、描述性强的提交信息,帮助团队成员理解更改内容。
- 使用分支模型: 使用 Git Flow 或 GitHub Flow 这样的分支模型,管理项目的开发过程和发布周期。
- 定期同步远程仓库: 及时拉取远程仓库的更新,避免冲突,并与团队保持一致。
6. 参考资源
- 官方文档: Git 官方文档
- Pro Git 书籍: 免费的在线书籍,详细介绍了 Git 的各个方面。
- 资源: Pro Git Book
- GitHub 学习资源: GitHub 提供了丰富的学习资源和实践教程。
7. 常见问题与解决方案
- 合并冲突: 当两个分支修改了同一文件的相同部分时,合并可能会产生冲突。解决方法是手动编辑冲突文件,然后重新添加和提交。
- 回滚错误的提交: 如果不小心提交了错误的内容,可以使用
git revert
或git reset
命令撤销更改。 - 本地与远程分支不同步: 使用
git pull --rebase
来拉取远程更新并将本地的更改放在更新之后,以保持历史的连贯性。