Git 使用教程
学习后端的时候,随着项目复杂,我们有必要学习常见的分支工具对项目进行管理,下面就是一个概括的教程。
1. 安装 Git
Git 可以在 Windows、macOS 和 Linux 系统上运行。首先,你需要安装 Git。
在 Windows 上安装 Git:
- 访问 Git 官网,下载适用于 Windows 的安装包。
- 运行下载的安装包,按默认设置完成安装。
- 安装完成后,在命令行中输入
git --version,确认是否安装成功。
在 macOS 上安装 Git:
在 macOS 上,Git 通常已经预装。如果没有,你可以通过 Homebrew 来安装:
brew install git
在 Linux 上安装 Git:
在 Linux 上,安装 Git 取决于你使用的发行版。以 Ubuntu 为例:
sudo apt update
sudo apt install git
2. 配置 Git
安装完成后,需要进行一些基本的配置,设置你的用户名和电子邮件地址。这些信息将用于每次提交时标记代码的作者。
git config --global user.name "Your Name"
git config --global user.email "youremail@example.com"
你可以通过以下命令来查看当前的配置:
git config --list
3. 创建和克隆仓库
创建一个新的 Git 仓库
要创建一个新的 Git 仓库,可以使用 git init 命令:
mkdir myproject
cd myproject
git init
这将会在当前目录中初始化一个新的 Git 仓库,并在其中创建一个隐藏的 .git 目录,用于存储版本控制信息。
克隆一个远程仓库
如果你想从远程仓库(如 GitHub、GitLab)获取项目代码,可以使用 git clone 命令。假设仓库地址为 https://github.com/username/repository.git,可以通过以下命令将其克隆到本地:
git clone https://github.com/username/repository.git
克隆操作会创建一个与远程仓库关联的本地仓库,并将远程仓库的所有文件和提交历史复制到本地。
4. 基本操作
查看当前状态
git status 命令可以查看当前 Git 仓库的状态,查看文件的修改情况,以及哪些文件已经准备好提交:
git status
添加文件到暂存区
Git 使用暂存区来准备提交。通过 git add 命令,可以将修改的文件添加到暂存区:
git add file1.txt
如果要添加所有文件,可以使用:
git add .
提交更改
添加文件到暂存区后,需要使用 git commit 提交更改。每次提交时都需要提供一个简短的描述:
git commit -m "Initial commit"
查看提交历史
使用 git log 命令可以查看提交历史:
git log
你可以通过 git log --oneline 来查看简洁版的提交历史,每个提交的 ID 以一行显示。
撤销更改
如果你想撤销对某个文件的修改,可以使用以下命令:
git checkout -- file1.txt
这将会把 file1.txt 文件恢复到上一次提交的状态。
如果已经将文件添加到暂存区,但尚未提交,可以使用 git reset 来撤销操作:
git reset file1.txt
5. 分支管理
Git 中的分支允许你并行开发不同的功能或修复不同的 bug,而不影响主分支(通常是 main 或 master)。你可以创建新的分支,并在其中进行开发,最后将其合并回主分支。
创建分支
使用 git branch 命令创建一个新分支:
git branch new-feature
切换到分支
使用 git checkout 命令切换到新分支:
git checkout new-feature
或者使用 git switch(Git 2.23+):
git switch new-feature
合并分支
在完成分支上的开发后,可以将其合并回主分支。首先,切换到主分支:
git checkout main
然后使用 git merge 命令将 new-feature 分支合并到主分支:
git merge new-feature
如果没有冲突,Git 会自动合并。如果有冲突,Git 会提示你手动解决冲突。
删除分支
如果你完成了对某个分支的开发并已经合并,可以删除该分支:
git branch -d new-feature
如果该分支尚未合并,你可以使用 -D 强制删除:
git branch -D new-feature
6. 远程操作
在团队协作中,Git 的远程操作尤为重要。你可以与远程仓库进行交互,获取最新的代码或推送本地的更改。
查看远程仓库
使用 git remote 查看当前仓库的远程仓库信息:
git remote -v
拉取远程代码
使用 git pull 命令从远程仓库获取最新的代码,并合并到本地仓库:
git pull origin main
推送本地代码到远程仓库
使用 git push 将本地的更改推送到远程仓库:
git push origin main
如果你正在推送某个分支,可以使用:
git push origin new-feature
7. Git 合作工作流
Git 非常适合团队开发。典型的团队工作流包括使用 GitHub 或 GitLab 来托管代码库,开发者从主分支创建分支,进行功能开发,开发完成后进行合并。在这个过程中,可以使用 Pull Request(GitHub)或 Merge Request(GitLab)来审查代码。
8. Git 标签
标签用于标记代码库的某个特定版本,通常用于发布版本。你可以创建一个标签来标记某个提交。
创建标签
使用 git tag 命令创建标签:
git tag v1.0.0
推送标签到远程
标签默认不会自动推送到远程仓库。使用 git push 推送标签:
git push origin v1.0.0
查看标签
使用 git tag 查看所有标签:
git tag
9. 其他常用命令
比较更改
使用 git diff 查看文件的更改:
git diff
查看分支
使用 git branch 查看所有本地分支:
git branch
重新提交修改
有时你可能需要修改最后一次提交的内容,可以使用:
git commit --amend
这将允许你修改提交信息或修改已经提交的内容。
10. 一个推荐的分支协作示例
在 Git 协作开发中,分支管理是非常关键的一环,合理的分支策略能够有效避免冲突,提高开发效率,并确保代码的质量。以下是一个常见的 Git 分支协作规范示例,适用于团队开发,结合了常见的 Git 工作流和分支命名约定。
1. 总体分支结构
主分支(main 或 master)
- 用途:主分支是代码库的稳定版本,始终保持可以随时部署的状态。
- 规范:只有经过充分测试、且代码质量得到保障的提交才能合并到主分支。
- 合并方式:通常采用
merge或rebase方式将开发分支合并进来,合并时需要经过代码审查。
开发分支(develop)
- 用途:开发分支是开发过程中最活跃的分支。所有的新功能、修复都首先提交到该分支,进行集成、测试和开发。最终稳定后,代码会从
develop合并到main。 - 规范:所有的开发工作都应该基于
develop分支进行,develop分支保持最新的开发状态,并且经常更新。
功能分支(feature/xxx)
-
用途:功能分支用于开发新的功能,每个功能开发一个独立的分支。
-
命名规范:
feature/<功能名>,例如:feature/login-page。 -
创建方式:
bash 复制代码 git checkout develop git pull origin develop git checkout -b feature/login-page -
合并:功能开发完成后,将功能分支合并回
develop分支。合并时建议采用merge或rebase,并进行代码审查。 -
删除:合并完成后,删除该分支:
bash 复制代码 git branch -d feature/login-page git push origin --delete feature/login-page
修复分支(hotfix/xxx)
-
用途:修复生产环境中的紧急问题时使用,通常基于
main分支创建。 -
命名规范:
hotfix/<问题描述>,例如:hotfix/fix-login-bug。 -
创建方式:
bash 复制代码 git checkout main git pull origin main git checkout -b hotfix/fix-login-bug -
合并:修复完成后,首先将修复分支合并回
main,然后再合并回develop,以确保develop也包含这些修复。bash 复制代码 git checkout main git merge hotfix/fix-login-bug git push origin main git checkout develop git merge hotfix/fix-login-bug git push origin develop -
删除:修复完成后,删除该分支:
bash 复制代码 git branch -d hotfix/fix-login-bug git push origin --delete hotfix/fix-login-bug
发布分支(release/xxx)
-
用途:发布分支用于准备版本发布,修复一些小 bug,进行最终测试等。当开发完成时,会从
develop分支创建release分支。 -
命名规范:
release/<版本号>,例如:release/1.0.0。 -
创建方式:
bash 复制代码 git checkout develop git pull origin develop git checkout -b release/1.0.0 -
合并:发布完成后,首先将发布分支合并回
main,然后再合并回develop,以确保develop包含最终版本的改动。bash 复制代码 git checkout main git merge release/1.0.0 git tag v1.0.0 git push origin main git push origin v1.0.0 git checkout develop git merge release/1.0.0 git push origin develop -
删除:发布完成后,删除该分支:
bash 复制代码 git branch -d release/1.0.0 git push origin --delete release/1.0.0
2. 分支操作流程
以下是常见的分支操作流程,包括开发、合并、和删除分支的详细步骤。
2.1 创建新功能分支
-
确保本地的
develop分支是最新的:bash 复制代码 git checkout develop git pull origin develop -
创建新功能分支并切换到该分支:
bash 复制代码 git checkout -b feature/new-feature -
在新分支上进行开发,提交代码:
bash 复制代码 git add . git commit -m "Add new feature" -
完成开发后,将功能分支合并回
develop:bash 复制代码 git checkout develop git pull origin develop git merge feature/new-feature -
删除功能分支:
bash 复制代码 git branch -d feature/new-feature git push origin --delete feature/new-feature
2.2 修复生产问题(Hotfix)
-
从
main分支创建修复分支:bash 复制代码 git checkout main git pull origin main git checkout -b hotfix/urgent-fix -
修复问题后,提交代码并合并回
main:bash 复制代码 git add . git commit -m "Fix urgent issue" git checkout main git merge hotfix/urgent-fix git push origin main -
同时合并到
develop分支:bash 复制代码 git checkout develop git pull origin develop git merge hotfix/urgent-fix git push origin develop -
删除修复分支:
bash 复制代码 git branch -d hotfix/urgent-fix git push origin --delete hotfix/urgent-fix
2.3 发布版本(Release)
-
从
develop分支创建发布分支:bash 复制代码 git checkout develop git pull origin develop git checkout -b release/1.0.0 -
完成发布准备工作后,合并回
main分支:bash 复制代码 git checkout main git merge release/1.0.0 git tag v1.0.0 git push origin main git push origin v1.0.0 -
同时将发布分支的更改合并回
develop分支:bash 复制代码 git checkout develop git merge release/1.0.0 git push origin develop -
删除发布分支:
bash 复制代码 git branch -d release/1.0.0 git push origin --delete release/1.0.0
3. Git 分支命名规范
为了确保代码库的规范性,Git 分支的命名应该遵循一定的规则,便于团队成员理解和管理:
- 功能分支:
feature/<功能名称>,例如:feature/login-form、feature/user-profile。 - 修复分支:
hotfix/<修复描述>,例如:hotfix/fix-login-bug。 - 发布分支:
release/<版本号>,例如:release/1.0.0。 - 开发分支:
develop(通常不需要额外命名)。
4. 代码审查与合并策略
在多人协作的项目中,代码审查(Code Review)是不可或缺的一环。团队成员可以使用 Git 的 Pull Request(GitHub)或 Merge Request(GitLab)功能来进行代码审查:
- 在功能分支或修复分支开发完成后,创建 Pull Request 或 Merge Request。
- 其他团队成员对代码进行审查,检查是否符合编码规范,是否有潜在的 bug 或逻辑问题。
- 审查通过后,合并回
develop或main分支。
合并策略:
- Merge Commit:保留所有的提交历史。
- Squash and Merge:将所有提交合并成一个提交,这样可以保持主分支历史清洁。