Git 的正确使用姿势与最佳实践:团队协作和版本控制的最佳实践| 青训营

53 阅读4分钟

什么是git

Git是一个分布式版本控制系统,广泛用于软件开发中。

Git的工作原理是将代码库完整地复制到每个开发者的本地计算机上,称为本地仓库。每个开发者可以在本地仓库上进行修改、提交和分支等操作,而不需要联网。开发者可以在本地仓库中完成自己的工作,然后将更改推送到远程仓库以与其他开发者共享。

Git的优势包括:

  1. 分布式:每个开发者都有一个完整的代码库副本,可以在没有网络连接的情况下进行工作。
  2. 高效:Git跟踪文件的更改而不是整个文件的副本,因此在提交和推送更改时非常快速和高效。
  3. 分支管理:Git允许开发者创建和管理不同的分支,可以同时进行多个功能开发和修复工作,并在需要时合并分支。
  4. 版本控制:Git可以记录每次代码更改的详细信息,包括哪些文件被更改、何时更改以及更改的内容,以便开发者可以方便地追踪和回滚代码。
  5. 开源:Git是一个开源项目,拥有庞大的开发者社区,提供了许多功能强大的工具和插件。

与另一个版本控制工具svn的比较

svn是另一个常用的版本控制工具。

git是一个分布式的版本控制系统,而svn是一个集中式的版本控制系统。

svn有一个中央代码库,用于存储所有文件的历史版本和元数据(例如作者、提交时间等)。而开发者在开发的时候需要连接到中央代码库来获取代码和提交更改。

先抑后扬一下,svn比git简单非常多,由于是一个集中式的版本控制工具,原理非常简单,而在实际开发中,git初学者往往束手束脚。

当然,git的优点也非常明显

  1. 分布式协作,每个开发者都有一个完整的代码库的副本,开发者在开发的时候不受中央代码仓的限制。注意,git服务器和svn的中央代码仓库不是一回事。
  2. 高效,这主要体现在两个方面,一个是提交和推送更改,这是由于git追踪的是文件的更改而不是整个项目;第二个是分支,git的分支操作是提到git高效的时候绕不开的方面。

git结构和操作

这里借用一下网图 1a26afe5df554a36a95bcd8b9418b1fe~tplv-k3u1fbpfcp-zoom-in-crop-mark_1512_0_0_0.webp

git本地操作

初学者看到上面那张图的时候往往十分懵比,这里我们先不关注远程仓库,就把git看作一个不带分布式的版本控制工具。 工作区 简单理解就是当前git项目目录 暂存区 使用git add把代码添加到暂存区 本地仓库 使用git commit把暂存区的修改提交到本地仓库

git远程仓库

可以使用git pull将远程仓库的所有更新的信息拉到本地仓库,这个命令不是只拉取当前分支 可以使用git push将本地仓库的更新提交到远程仓库,这样,在远程仓库中就有了一份你的代码的备份。 在我的实际开发中,也基本只有这两种用法。远程仓库只是方便其他开发者也能使用我的更新,或者防止本地代码丢失的一个代码仓。

git协作开发

场景就是现在有个需求下来了,比如需求编号为dev1 一个需求需要开发者大致进行需求分析,需求开发,测试,合入这几步,所以肯定不能在主分支上进行开发动作 所以需要有切换分支、本地开发、合入这几步

切换分支

git pull
git checkout master
git checkout -b dev1
  1. git pull 保证代码是最新的
  2. git checkout master 切换到主分支
  3. git checkout -b dev1 从主分支创建dev1分支并切换到dev1分支

本地开发

本地开发需要及时保存 假设我们修改了a.go

git add a.go
git commit
git push
  1. git add a.go 将a.go保存到暂存区
  2. git commit 将暂存区的内容保存到本地仓库,这个时候会唤醒编辑器,可以编辑commit信息
  3. git push 及时保存到远程仓库。如果是第一次push,远程仓库没有关联分支,需要使用下面的命令推送,其中origin是远程仓库名 git push --set-upstream origin dev1

测试完成之后的合入

git pull
git checkout master
git merge dev1
  1. git pull 保证代码是最新的
  2. git checkout master 切换到主分支
  3. git merge dev1 把dev1合入到主分支