1. Git 基本概念
1.1 什么是Git?
Git是一个分布式版本控制系统,它可以记录文件的变更历史,便于多人协作开发项目。每个开发者的工作目录中都拥有整个项目的完整历史记录,这使得Git在网络连接不稳定或离线情况下也能进行开发。
1.2 版本控制系统(VCS)简介
版本控制系统是管理项目变更的工具,它可以跟踪每个文件的修改历史,允许开发者在不同版本之间进行切换、比较、合并等操作。Git是目前最流行的版本控制系统之一,特别适用于分布式团队开发。
2. Git 安装与配置
2.1 Git 安装
- Windows: 访问Git官网下载适用于Windows的安装程序。安装时可以选择默认选项。
- macOS: 使用Homebrew安装Git:
brew install git
- Linux: 在大多数Linux发行版中,Git可以通过包管理器安装,例如在Ubuntu中使用:
sudo apt-get install git
2.2 配置 Git
配置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
文件夹,包含了所有版本控制信息。
3.2 克隆远程仓库
如果已有一个远程仓库,可以通过 git clone
命令将其克隆到本地:
git clone https://github.com/user/repository.git
这会在本地创建一个与远程仓库内容一致的副本。
3.3 文件的跟踪与提交
- 查看状态:查看哪些文件被修改了、哪些文件被暂存了:
git status
- 添加文件到暂存区:将文件的修改添加到暂存区,准备提交:
git add <file>
添加所有修改的文件:
git add .
- 提交更改:提交暂存区的文件,并附加提交信息:
git commit -m "提交信息"
- 查看提交历史:查看仓库的提交记录:
git log
查看每个提交的详细信息:
git log --stat
3.4 撤销操作
- 撤销修改:还原工作目录中文件的修改(未暂存):
git checkout -- <file>
- 撤销暂存:将已暂存的修改移回工作区:
git reset HEAD <file>
- 撤销最后一次提交:保留修改但撤销提交:
git reset --soft HEAD^
4. 分支管理
4.1 创建分支
创建一个新的分支,用于独立开发新功能或修复bug:
git branch <branch-name>
4.2 切换分支
切换到指定分支:
git checkout <branch-name>
4.3 合并分支
将另一个分支的更改合并到当前分支:
git merge <branch-name>
4.4 删除分支
删除不再需要的分支:
git branch -d <branch-name>
4.5 分支管理策略
- Feature Branch:为每个新功能创建独立的分支。
- Hotfix Branch:紧急修复bug时创建独立的分支。
- Master/Main Branch:主要分支,通常用于存放稳定的代码。
- Develop Branch:用于整合各个功能分支的开发分支。
5. 远程操作
5.1 关联远程仓库
关联一个远程仓库,使本地仓库能够推送和拉取远程内容:
git remote add origin https://github.com/user/repository.git
5.2 推送到远程仓库
将本地分支的更改推送到远程仓库:
git push origin <branch-name>
首次推送可能需要设置上游分支:
git push -u origin <branch-name>
5.3 拉取远程更新
从远程仓库拉取最新的更改并合并到本地:
git pull
6. 处理冲突
在合并分支时,如果同一文件的同一部分被不同的修改,Git 会提示冲突。你需要手动解决冲突,并继续完成合并。
6.1 查看冲突区域
Git会在冲突的文件中标记冲突区域:
<<<<<<< HEAD // 你的更改 ======= // 来自另一个分支的更改 >>>>>>> branch-name
你需要选择并编辑这些冲突,然后保存文件。
6.2 标记冲突解决
解决冲突后,使用 git add
添加修改,并完成合并:
git add <file> git commit
7. 高级操作
7.1 交互式重写历史
有时你可能需要修改之前的提交历史,这可以通过 git rebase
来实现:
git rebase -i HEAD~3
此命令将打开一个交互式界面,你可以选择修改、删除、合并提交等。
7.2 Stash 临时保存更改
在切换分支时,如果当前分支有未提交的更改,可以使用 git stash
暂存这些更改:
git stash
之后可以通过 git stash apply
恢复这些更改。
8. 常见问题与解决
8.1 忘记添加文件后提交了怎么办?
可以使用 git commit --amend
将新文件添加到上一次提交中:
git add <new-file> git commit --amend
8.2 推送时遇到拒绝错误
如果在推送时遇到拒绝错误,可能是因为远程仓库有新提交。你需要先拉取这些更改:
git pull --rebase git push
8.3 如何删除远程分支?
使用 git push
命令删除远程仓库中的分支:
git push origin --delete <branch-name>
9. 学习资源
- Git 官方文档
- Pro Git 电子书
- 廖雪峰的 Git 教程