青训营工具使用一:Git| 豆包MarsCode AI 刷题

44 阅读5分钟

1. 什么是 Git?

Git 是一个强大的分布式版本控制系统,用于跟踪文件的更改,尤其是源代码。它允许多名开发者同时在不同的地方进行开发工作,并且能够非常高效地合并不同开发者的代码。
与集中式版本控制系统(如 SVN)不同,Git 是分布式的,这意味着每个开发者的本地机器上都有完整的代码库和版本历史。这样不仅提高了效率,还增强了容错能力。很多人在想有了Git为什么还要有SVN,或者说有了Git为什么还有很多公司用SVN,那是因为与Git相比SVN对代码的安全性更好,对权限控制更好。

2. Git 的基本操作

2.1 初始化和克隆仓库

  • git init:用于初始化一个新的 Git 仓库。

    git init
    
  • git clone <repository-url> :用于从远程仓库克隆一个 Git 仓库到本地,常用于首次获取项目代码。

    git clone https://github.com/username/repository.git
    

初始化一个项目有两种方式一个是本地init上传到仓库,也可以在仓库创建好然后git clone下来。

2.2 查看仓库状态

  • git status:查看当前工作目录和暂存区的状态,包括哪些文件已被修改,哪些文件已被暂存,哪些文件未被追踪。

    git status
    

2.3 提交更改

  • git add <file> :将修改过的文件添加到暂存区,准备提交。

    git add index.html
    

这里可以使用.gitignore 文件帮助我们忽略不必要的文件或文件夹,避免这些文件被加入到版本控制中。通常,会将一些不需要被版本控制的文件添加到 .gitignore 文件中,比如临时文件、编译生成的文件、IDE 配置文件等。

  • git commit -m "message" :将暂存区的更改提交到本地仓库,-m 后面跟提交信息。

    git commit -m "Fix the header issue"
    
  • git commit -a:会将已跟踪文件的所有修改直接提交到本地仓库,跳过 git add 的过程。

    git commit -a -m "Update code for footer"
    

2.4 查看提交历史

  • git log:查看提交历史记录。可以加上一些选项,如 --oneline 来显示更简洁的历史记录。

    git log --oneline
    

3. 分支管理

分支是 Git 最强大的功能之一,它允许你并行开发多个功能,并在完成后将它们合并。分支管理是团队协作中的关键。

3.1 创建和切换分支

  • git branch <branch-name> :创建一个新分支。

    git branch feature-xyz
    
  • git checkout <branch-name> :切换到指定分支。

    git checkout feature-xyz
    
  • git checkout -b <branch-name> :创建并切换到新分支。

    git checkout -b feature-xyz
    

3.2 合并分支

  • git merge <branch-name> :将指定分支的更改合并到当前分支。

    git checkout develop
    git merge feature-xyz
    

3.3 删除分支

  • git branch -d <branch-name> :删除本地分支,分支已合并时使用。

    git branch -d feature-xyz
    

这里可能存在冲突要先解决冲突然后提交,最后push到仓库

4. Git 协作流程

团队协作时,Git 提供了非常灵活的工作流。下面是一些常见的协作流程:

4.1 Fork 和 Pull Request 流程

在开源项目中,团队成员通常会先 Fork 远程仓库,然后在自己本地的分支上进行修改,最后通过 Pull Request 提交代码。具体流程如下:

  1. Fork 仓库:点击 GitHub 页面上的 Fork 按钮,复制仓库到自己的账户中。

  2. Clone 仓库到本地:克隆自己 Fork 的仓库到本地。

    git clone https://github.com/username/forked-repository.git
    
  3. 创建分支并开发:创建一个新的分支并开始开发。

    git checkout -b feature-xyz
    

一般来说在公司里,我们每个人在每个版本都有自己独立的开发分支,彼此分支互相不干扰,如果要合作开发最好是新建业务分支,不要随便merge别人的分支。

  1. 提交更改:开发完成后,将代码提交到本地仓库。

    git commit -m "Add feature xyz"
    
  2. 推送到远程仓库:将更改推送到自己的 Fork 仓库。

    git push origin feature-xyz
    

4.2 多人协作

  • git pull:拉取远程仓库的更新到本地,确保你的分支是最新的,避免冲突。

    git pull origin develop
    

在我们多人协作开发的时候一定要先pull拉去最新代码然后合并,解决冲突后再push。

  • git push:将本地的修改推送到远程仓库。

    git push origin feature-xyz
    

5. Git 的最佳实践

5.1 频繁提交

每次提交都应该是小而清晰的,避免一次性提交大量的更改。频繁的小提交可以帮助你更好地追踪问题,尤其是在调试时。

5.2 清晰的提交信息

提交信息应简洁明了,说明本次更改的目的。例如:

  • feat: add login functionality
  • fix: resolve issue with input validation
  • docs: update README with installation instructions

5.3 分支管理

合理使用分支,遵循以下分支策略:

  • main(或 master)分支:始终保持可发布状态,只用于生产环境。
  • develop 分支:用来存放开发中的代码,所有新特性都应合并到 develop
  • feature/<feature-name> 分支:每个功能或任务使用一个分支,独立开发,完成后合并回 develop
  • release/<version> 分支:用于发布准备工作,修复小问题,稳定代码。
  • hotfix/<version> 分支:紧急修复生产环境的代码,修复后会同时合并回 maindevelop

5.4 定期合并与同步

团队开发时,保持本地仓库和远程仓库的同步非常重要。建议定期 git pull 更新代码,避免产生复杂的合并冲突。

5.5 避免强制推送

尽量避免使用 git push --force,强制推送可能会覆盖远程仓库的更改,导致其他开发者的工作丢失。如果必须重写历史,使用 git push --force-with-lease,并与团队成员沟通。


6. Git 的高级功能

6.1 Git Rebase

git rebase 可以将某个分支的修改移动到另一个分支的顶部,保持一个干净的提交历史。通常与 git pull --rebase 配合使用,避免合并提交。

git checkout feature-xyz
git rebase develop

6.2 Git Cherry-pick

git cherry-pick 用于选择一个提交应用到当前分支,通常在某个提交需要从其他分支移植时使用。

git cherry-pick <commit-hash>