学习如何像专业人士一样在团队中使用 Git 和 GitHub

2025-05-25

学习如何像专业人士一样在团队中使用 Git 和 GitHub

在本教程中,你将学习如何在 GitHub 上使用中心仓库进行团队协作。你将处理问题、提交、拉取请求、代码审查等等。

我并不认为自己是 Git 专家,但在从事软件开发的第一个月里,我学到了很多。本教程旨在向您介绍如何在专业环境中使用 Git。请记住,使用 Git 的方法不止一种,所以这只是其中一种方法,它可能与您在职业生涯中看到的不同。

开始使用 Git 工作流的一本好书是Atlassian 的比较工作流教程。

项目

哈利和赫敏萌生了一个绝妙的想法:开发一款 SaaS 应用,让人们可以在线制作自己的魔药,并与全世界分享。他们将其命名为Potionfy,这将是他们的第一家创业公司。

他们决定使用 GitHub 作为存储所有工作的中央存储库,并选择 React 和 Ruby on Rails 作为应用程序技术堆栈。

团队

Potionfy 将由哈利和赫敏用他们的积蓄自行创办。他们将在自家车库里进行创作,预计 4 周内就能完成 MVP 的制作。

让我们看看他们将如何合作构建 SaaS 产品,以及在此过程中他们必须克服的障碍。

初始设置

该项目将使用两个虚构的团队成员,我们称他们为 Harry 和 Hermione,他们拥有两个独立的 GitHub 帐户,因此您可能需要为此在 GitHub 上开始创建两个帐户。

额外奖励:为了简化事情,如果您有一个 Gmail 帐户,您可以在 Gmail 地址中使用加号,并在其第一部分后添加一个字符串,这样所有电子邮件通信都将集中在一个帐户中,如下所示:

my_email_address+harry@gmail.com
my_email_address+hermione@gmail.com
Enter fullscreen mode Exit fullscreen mode

更多信息请见此处

步骤1:创建两个不同的GitHub帐户

为了继续学习本教程,您需要两个不同的 GitHub 帐户。我选择创建两个,但您也可以使用自己的帐户并创建另一个。我的设置如下:

哈利和赫敏的 GitHub 帐户

步骤2:本地开发环境

我们将使用本地开发环境并在其上设置 Git。我决定使用运行 Linux 的虚拟机,但您也可以使用自己的环境(我只是想避免任何 Git 配置问题)。

我们必须确保系统中安装了 Git:

git --version
Enter fullscreen mode Exit fullscreen mode

此命令应该返回系统中安装的 Git 版本。就我而言,我的虚拟 Ubuntu 没有安装它,所以我运行了:

sudo apt install git
Enter fullscreen mode Exit fullscreen mode

步骤 3:团队合作考虑

Harry 将在我们的开发环境中本地工作,而 Hermione 将选择使用在线 VSCode 直接在 GitHub 上工作(稍后会详细介绍)。

开展项目

步骤 1:创建存储库并组建团队(免费)

Hermione 是团队的负责人,她在编码方面经验更丰富,因此她决定创建一个新的仓库来托管 SaaS 产品的代码。创建仓库时,她只需使用 GitHub Web 界面,点击“选项卡” Repositories,然后点击“New按钮”。她将仓库命名为“.htm” potionfy,并添加了简短的描述和一个Readme.md文件。

Potionfy 存储库

仓库创建完成后,她邀请 Harry 来处理。她点击了仓库Settings中的标签页potionfy,然后点击了Manage access选项,最后点击了Add people按钮。

将人员添加到存储库

通过在弹出窗口中输入 Harry 的 GitHub 用户名(或电子邮件地址)并点击Add Harry(...) to this repository,她成功向 Harry 发送了邀请。

邀请哈利

几秒钟后,哈利收到了一封电子邮件邀请:

邀请邮件

他接受了它,这样一来,两个团队成员都准备开始他们的项目了。

注意:如果邀请链接不起作用(就像我的情况一样),哈利需要前往赫敏的 GitHub 个人资料,单击potionfy存储库,然后在那里接受邀请:

接受邀请(第一部分)

接受邀请(第二部分)

第 2 步:创建文件

Hermione 通过创建 Potionfy SaaS 产品将使用的初始文件来启动该项目:index.html。为此,她使用 GitHub Web 界面创建了该文件,方法是将自己定位在存储库中并单击Add file>Create new file按钮。

图片描述

然后,她添加了文件的名称、内容以及一条有意义的提交消息。点击按钮后Commit new file,该文件便在存储库中创建了。

创建文件

步骤 3:创建问题并进行处理

赫敏需要继续处理与 Potionfy 发布相关的市场营销工作,所以她告诉哈利在文件中添加一条简单的登陆信息。于是,她点击了标签页,并点击了按钮,在仓库中index.html创建了一个问题IssuesNew issue

新问题

新问题描述

问题创建后,哈利查看了它(也是通过转到issuesPotionfy 存储库中的选项卡)并让赫敏知道他将通过留下评论并将问题分配给自己来处理它。

问题分配

通过这种动态的方式,团队将知道谁在做什么。

步骤 4:设置本地开发环境

为了处理项目文件,Harry 选择在本地工作,因此他需要在他的开发环境(Linux 虚拟机)中index.html克隆存储库。potionfy

他要做的第一件事就是设置 SSH 密钥以便与 GitHub 配合使用。他按照 GitHub 的生成新的 SSH 密钥并将其添加到 ssh-agent教程进行操作。然后,他按照将新的 SSH 密钥添加到 GitHub帐户教程将密钥添加到他的 GitHub 帐户

然后,哈利在 GitHub 上打开了赫敏仓库,并复制
链接进行克隆:

克隆存储库

现在,在他的本地开发环境中,他创建了一个新目录,他的所有工作都将集中在其中:

$ mkdir ~/development
$ cd ~/development
Enter fullscreen mode Exit fullscreen mode

git clone最后,他通过输入并粘贴刚刚从 GitHub 复制的代码(这是存储库的地址)来克隆存储库:

$ git clone git@github.com:Hermione-Colo-Codes/potionfy.git
Enter fullscreen mode Exit fullscreen mode

这样,他现在就有了存储库的本地副本,可以开始处理它了。

$ ll
total 12
drwxrwxr-x  3 parallels parallels 4096 Nov 17 07:34 ./
drwxr-xr-x 23 parallels parallels 4096 Nov 17 07:33 ../
drwxrwxr-x  3 parallels parallels 4096 Nov 17 07:34 potionfy/
Enter fullscreen mode Exit fullscreen mode

GitHub 流程

为了在存储库上工作,这是 GitHub 推荐的工作流程:

  1. 创建分支
  2. 做出改变
  3. 创建拉取请求
  4. 处理审查意见
  5. 合并你的拉取请求
  6. 删除你的分支

有关这方面的更多信息,您可以阅读此文档

步骤 1:分支

出于避免直接在 master 分支上工作的做法,Harry 创建了一个与他要处理的问题相关的新分支。他选择在 GitHub 仓库上执行此操作,但他也可以在本地环境中使用 Git 命令执行相同的操作。

他选择了一个有意义的名字,并在名字前面加上了相关问题的编号(1在本例中为)。

创建分支

有关如何在 GitHub 上创建分支的更多信息,请参见此处

步骤 2:在本地分支上工作

分支创建后,Harry 开始对其进行研究。

步骤 2.1:git pull

他做的第一件事是查看pull整个存储库,以便可以在本地开发环境中看到分支。

~/development/potionfy$ git pull
Warning: Permanently added the ECDSA host key for IP address '13.237.44.5' to the list of known hosts.
From github.com:Hermione-Colo-Codes/potionfy
 * [new branch]      1-add-landing-message -> origin/1-add-landing-message
Already up to date.
Enter fullscreen mode Exit fullscreen mode
步骤 2.2:git checkout

在他的环境中有了新的分支后,他使用git checkout <name_of_branch>命令切换到了该分支。之后,他使用该git branch命令确保自己在正确的分支上工作。

~/development/potionfy$ git checkout 1-add-landing-message 
Branch '1-add-landing-message' set up to track remote branch '1-add-landing-message' from 'origin'.
Switched to a new branch '1-add-landing-message'

~/development/potionfy$ git branch
* 1-add-landing-message
  main
Enter fullscreen mode Exit fullscreen mode
步骤 2.3:解决问题

Harry 开始着手解决这个问题。为了解决这个问题,他打开了index.html文件并添加了一个h1标题。

更改文件

完成更改后,他观察了 Git 对此更改的反应。

~/development/potionfy$ git status
On branch 1-add-landing-message
Your branch is up to date with 'origin/1-add-landing-message'.

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
    modified:   index.html

no changes added to commit (use "git add" and/or "git commit -a")
parallels@parallels-Parallels-Virtual-Platform:~/development/potionfy$ 
Enter fullscreen mode Exit fullscreen mode

然后,他使用命令将文件添加到暂存区git add,并使用命令提交更改git commit

~/development/potionfy$ git add -A

~/development/potionfy$ git commit -m "Add landing message. #1"

~/development/potionfy$ git status
Enter fullscreen mode Exit fullscreen mode

请注意提交消息还包含问题的 ID,在本例中为#1

步骤 2.4:推送到存储库

Harry 需要做的下一步是将更改推送到存储库。

~/development/potionfy$ git push
Enter fullscreen mode Exit fullscreen mode

推动变革

步骤 2.5:创建拉取请求

然后,Harry 点击了Compare and pull requestGitHub 存储库中的按钮(确保在分支左侧下拉菜单中选择了他的分支)。

拉取请求

Hermione 将分析此拉取请求并决定是否可以将其合并到主分支。

第 2 部分

由于本教程篇幅较长,我将其分为两部分。下一部分我们将介绍赫敏如何审阅哈利的代码并处理拉取请求。


🗞️新闻通讯 - 如果您想了解我的最新文章和有趣的软件开发内容,请订阅我的新闻通讯如果在 2021 年 11 月订阅人数超过 100 人,我将向订阅者赠送一门 Udemy 课程!

🐦TWITTER——在Twitter上关注

文章来源:https://dev.to/colocodes/learn-how-to-use-git-and-github-in-a-team-like-a-pro-2dk7
PREV
我的第二个原生 JavaScript 项目:使用 API、Promise、类、错误处理等等!为什么我选择构建这个项目?🤔 我想要在这个项目中实现什么?时间管理:选择 API 工作流程:初步规划:编写基础知识:HTML、CSS 和 JavaScript;测试应用并征求反馈;发布:经验教训
NEXT
如何调试 React 应用