学习如何像专业人士一样在团队中使用 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
更多信息请见此处。
步骤1:创建两个不同的GitHub帐户
为了继续学习本教程,您需要两个不同的 GitHub 帐户。我选择创建两个,但您也可以使用自己的帐户并创建另一个。我的设置如下:
步骤2:本地开发环境
我们将使用本地开发环境并在其上设置 Git。我决定使用运行 Linux 的虚拟机,但您也可以使用自己的环境(我只是想避免任何 Git 配置问题)。
我们必须确保系统中安装了 Git:
git --version
此命令应该返回系统中安装的 Git 版本。就我而言,我的虚拟 Ubuntu 没有安装它,所以我运行了:
sudo apt install git
步骤 3:团队合作考虑
Harry 将在我们的开发环境中本地工作,而 Hermione 将选择使用在线 VSCode 直接在 GitHub 上工作(稍后会详细介绍)。
开展项目
步骤 1:创建存储库并组建团队(免费)
Hermione 是团队的负责人,她在编码方面经验更丰富,因此她决定创建一个新的仓库来托管 SaaS 产品的代码。创建仓库时,她只需使用 GitHub Web 界面,点击“选项卡” Repositories
,然后点击“New
按钮”。她将仓库命名为“.htm” potionfy
,并添加了简短的描述和一个Readme.md
文件。
仓库创建完成后,她邀请 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
创建了一个问题。Issues
New issue
问题创建后,哈利查看了它(也是通过转到issues
Potionfy 存储库中的选项卡)并让赫敏知道他将通过留下评论并将问题分配给自己来处理它。
通过这种动态的方式,团队将知道谁在做什么。
步骤 4:设置本地开发环境
为了处理项目文件,Harry 选择在本地工作,因此他需要在他的开发环境(Linux 虚拟机)中index.html
克隆存储库。potionfy
他要做的第一件事就是设置 SSH 密钥以便与 GitHub 配合使用。他按照 GitHub 的生成新的 SSH 密钥并将其添加到 ssh-agent教程进行操作。然后,他按照将新的 SSH 密钥添加到 GitHub帐户教程将密钥添加到他的 GitHub 帐户。
然后,哈利在 GitHub 上打开了赫敏仓库,并复制
链接进行克隆:
现在,在他的本地开发环境中,他创建了一个新目录,他的所有工作都将集中在其中:
$ mkdir ~/development
$ cd ~/development
git clone
最后,他通过输入并粘贴刚刚从 GitHub 复制的代码(这是存储库的地址)来克隆存储库:
$ git clone git@github.com:Hermione-Colo-Codes/potionfy.git
这样,他现在就有了存储库的本地副本,可以开始处理它了。
$ 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/
GitHub 流程
为了在存储库上工作,这是 GitHub 推荐的工作流程:
- 创建分支
- 做出改变
- 创建拉取请求
- 处理审查意见
- 合并你的拉取请求
- 删除你的分支
有关这方面的更多信息,您可以阅读此文档。
步骤 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.
步骤 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
步骤 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$
然后,他使用命令将文件添加到暂存区git add
,并使用命令提交更改git commit
。
~/development/potionfy$ git add -A
~/development/potionfy$ git commit -m "Add landing message. #1"
~/development/potionfy$ git status
请注意提交消息还包含问题的 ID,在本例中为#1
。
步骤 2.4:推送到存储库
Harry 需要做的下一步是将更改推送到存储库。
~/development/potionfy$ git push
步骤 2.5:创建拉取请求
然后,Harry 点击了Compare and pull request
GitHub 存储库中的按钮(确保在分支左侧下拉菜单中选择了他的分支)。
Hermione 将分析此拉取请求并决定是否可以将其合并到主分支。
第 2 部分
由于本教程篇幅较长,我将其分为两部分。下一部分我们将介绍赫敏如何审阅哈利的代码并处理拉取请求。

学习如何像专业人士一样在团队中使用 Git 和 GitHub(第 2 部分)
Damian Demasi ・ 21年11月22日
🗞️新闻通讯 - 如果您想了解我的最新文章和有趣的软件开发内容,请订阅我的新闻通讯。如果在 2021 年 11 月订阅人数超过 100 人,我将向订阅者赠送一门 Udemy 课程!
🐦TWITTER——在Twitter上关注 我。
文章来源:https://dev.to/colocodes/learn-how-to-use-git-and-github-in-a-team-like-a-pro-2dk7