[工具使用笔记]使用git来管理你的项目

64 阅读10分钟

Git 使用教程

学习后端的时候,随着项目复杂,我们有必要学习常见的分支工具对项目进行管理,下面就是一个概括的教程。

1. 安装 Git

Git 可以在 Windows、macOS 和 Linux 系统上运行。首先,你需要安装 Git。

在 Windows 上安装 Git:
  1. 访问 Git 官网,下载适用于 Windows 的安装包。
  2. 运行下载的安装包,按默认设置完成安装。
  3. 安装完成后,在命令行中输入 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,而不影响主分支(通常是 mainmaster)。你可以创建新的分支,并在其中进行开发,最后将其合并回主分支。

创建分支

使用 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. 总体分支结构

主分支(mainmaster

  • 用途:主分支是代码库的稳定版本,始终保持可以随时部署的状态。
  • 规范:只有经过充分测试、且代码质量得到保障的提交才能合并到主分支。
  • 合并方式:通常采用 mergerebase 方式将开发分支合并进来,合并时需要经过代码审查。

开发分支(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 分支。合并时建议采用 mergerebase,并进行代码审查。

  • 删除:合并完成后,删除该分支:

    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 创建新功能分支

  1. 确保本地的 develop 分支是最新的:

    bash
    复制代码
    git checkout develop
    git pull origin develop
    
  2. 创建新功能分支并切换到该分支:

    bash
    复制代码
    git checkout -b feature/new-feature
    
  3. 在新分支上进行开发,提交代码:

    bash
    复制代码
    git add .
    git commit -m "Add new feature"
    
  4. 完成开发后,将功能分支合并回 develop

    bash
    复制代码
    git checkout develop
    git pull origin develop
    git merge feature/new-feature
    
  5. 删除功能分支:

    bash
    复制代码
    git branch -d feature/new-feature
    git push origin --delete feature/new-feature
    

2.2 修复生产问题(Hotfix)

  1. main 分支创建修复分支:

    bash
    复制代码
    git checkout main
    git pull origin main
    git checkout -b hotfix/urgent-fix
    
  2. 修复问题后,提交代码并合并回 main

    bash
    复制代码
    git add .
    git commit -m "Fix urgent issue"
    git checkout main
    git merge hotfix/urgent-fix
    git push origin main
    
  3. 同时合并到 develop 分支:

    bash
    复制代码
    git checkout develop
    git pull origin develop
    git merge hotfix/urgent-fix
    git push origin develop
    
  4. 删除修复分支:

    bash
    复制代码
    git branch -d hotfix/urgent-fix
    git push origin --delete hotfix/urgent-fix
    

2.3 发布版本(Release)

  1. develop 分支创建发布分支:

    bash
    复制代码
    git checkout develop
    git pull origin develop
    git checkout -b release/1.0.0
    
  2. 完成发布准备工作后,合并回 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
    
  3. 同时将发布分支的更改合并回 develop 分支:

    bash
    复制代码
    git checkout develop
    git merge release/1.0.0
    git push origin develop
    
  4. 删除发布分支:

    bash
    复制代码
    git branch -d release/1.0.0
    git push origin --delete release/1.0.0
    

3. Git 分支命名规范

为了确保代码库的规范性,Git 分支的命名应该遵循一定的规则,便于团队成员理解和管理:

  • 功能分支feature/<功能名称>,例如:feature/login-formfeature/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 或逻辑问题。
  • 审查通过后,合并回 developmain 分支。

合并策略

  • Merge Commit:保留所有的提交历史。
  • Squash and Merge:将所有提交合并成一个提交,这样可以保持主分支历史清洁。