前端圈

分享与交流前端开发相关知识

一个简单的Git分支工作流程

为什么?

Git是用于版本控制的杰出工具,即跟踪和管理更改。这篇文章是关于实现一个简单但功能强大的工作流,用于随着项目的成长和成熟来管理和跟踪项目的变化。分支工作流程使我们能够仔细地进行和跟踪对项目的更改,而不会冒其核心完整性的风险。

版本控制使我们可以更好地处理代码库。每个项目都需要一个存储库,一个可观察且有组织的代码容器。如果您对修饰一个持久的项目很认真,那么就应该使用Git。为了便于说明,我们将Github用作Git在线主机的示例。

怎么样

入门

新项目必须在本地启动,或者在Github上使用新的存储库启动。此新存储库可以用文件初始化,也可以与现有本地目录链接。创建新的存储库时,请注意标记为“使用README初始化”的复选框(这里称为repo)。

《一个简单的Git分支工作流程》

如果你已经开始在您的计算机上的一个项目,你会被“导入现有的资源库”,所以采取Github上的建议,也没有选中此复选框。选中此框将使将本地目录与远程存储库链接起来更加复杂。而是通过打开终端窗口,移至项目目录,然后执行以下三行来“在命令行上推送[此]现有存储库”:

$ git init
$ git remote add origin [email protected]:USERNAME/REPO-NAME.git
$ git push -u origin master

git init将本地目录初始化为一个新的空git repo($表示我们正在终端中执行此命令)。该命令生成一个不可见的.git文件,并赋予目录空间Git所能提供的所有功能。在address git remote add添加名称的远程(即服务器)。此命令将本地存储库链接到还将托管该存储库的服务器。将目录的master分支中的内容推送或上载到原始服务器。将此远程存储库设置为默认的上游参考,这意味着它将是从中提取事物并将其推送到其中的默认远程存储库。origin[email protected]:USERNAME/REPO-NAME.gitgit push -u origin master-uorigin

如果您是从头开始项目并且没有本地工作,请随时选中该框,并将生成的README.md用作您的第一个项目文件!

下面是我们项目状态的说明。带有虚线边框的形状表示远程存储库上的项目,而带边框的形状表示本地项目。每个圆圈都是一次提交。非常感谢Learn Git Branching Applet提供了一种模拟和可视化Git工作流程的方法。我们将使用这些图来了解我们在做什么。

《一个简单的Git分支工作流程》

在上图中,我们的本地存储库与远程存储库已同步-都有两次提交。指向提交的框指向项目在分支中的位置(或更准确地说,何时)。这里,master分支是最新的提交C2。该头部是由星号(*)的表示,其中一个项目的历史,我们正在努力。通常,磁头指向最新的检查点,例如磁带录音机的磁头可能放在磁带的最新位置,或者电唱机的机针可能指向最新的歌曲。

节省进度

用通俗易懂的英语,我们来谈论一下Git工作流程的实质:阶段,提交和推送。这些操作对于保存所做更改至关重要。每次进行实质性更改时,都应该这样做。

为了舞台,我们执行git add我们的项目目录。够纯洁的!git add .git add FILE.js舞台 在目录或文件FILE.js文件,分别。按阶段,我们的意思是告诉Git我们要跟踪对这些文件所做的更改

提交,我们执行git commit -m "COMMIT MESSAGE以在项目的git历史记录中记录对暂存文件所做的更改。提交与保存大致相同,尽管我们要保存的唯一内容是对文件的更改,而不是文件本身的更改。有关如何执行此操作的建议,请参见如何编写有用的提交消息。下图显示了前两个命令后项目的状态。我们的本地项目存储库只需提交一次便可以领先远程!

《一个简单的Git分支工作流程》

为了推动,我们执行git push。默认情况下,此命令会将我们在其当前分支中的代码上传到服务器(在Git术语中称为远程origin默认情况下命名)。我们可以通过像这样传递选项来指定要推送的分支:git push REMOTE_NAME BRANCH_NAME

《一个简单的Git分支工作流程》

现在,我们的本地和远程存储库已同步!使用addcommitpush,我们可以跟踪项目的更改。拖着这个小字乞求一个问题,“我们什么时候需要这个?” 提交每一个到你的工作实质的变化。承诺!设置您的会话控制器?实施授权并只是修改您的用户模型?承诺!修正错误?承诺!

分阶段完成工作的每个小里程碑。当您完成工作会议时,或根据需要,推动这些更改,以便其他人可以访问。简而言之(例如):

  1. git add .
  2. git commit -m "Refactor custom Account model methods"
  3. git push

分支机构的损害控制

许多人倾向于只在master分支机构工作。这种行为类似于我以笔直的方式写这篇博客文章,当时坐在摇椅上的滚动办公桌上大喊:“我没有错!” 将master分支视为您的final draft分支,即项目的公众形象。当我们处理项目时,master分支将是我们所做的更改归宿的地方,但是这些更改将首先在其自己的分支中构思和培育,然后再合并。

Git项目的一个分支是并行的Universe。创建分支时,我们可以对分支中存在的项目进行更改,同时保护master分支免受新的易失性代码的侵害。

在将梦想变为现实之前,请考虑通过确定项目的不同构成要素来赋予精神形式。例如,Web应用程序通常遵循Model-View-Controller体系结构,具有针对应用程序不同方面的单独的模型,控制器和视图。当我们使用Git进行项目时,我们应该为每个模型,控制器和视图的实现创建新的分支。今后,我们可能会为新功能或错误修复创建分支。

在Git中分支很简单git branch BRANCH_NAME。此命令创建一个新分支。要在该分支机构工作,我们需要将其签出,就像在图书馆看书一样。git checkout BRANCH_NAME绝招。由于我们很幸运能够在懒惰是一种美德的领域工作,因此我们可以简化这一过程。git checkout -b BRANCH_NAME将同时创建和签出分支。

一旦我们创建了一个分支,我们可以节省我们的进步addcommit往常一样。请记住,执行git push将上载当前分支中最后一次提交中存在的项目。完成上述所有操作后,下图显示了我们项目的状态。注意星号的位置!由于我们在该特定分支机构中,因此这是帐户-m

《一个简单的Git分支工作流程》

上图显示了master分支指向比account-m分支更早提交的分支。既然我们致力于account-mmaster就落后了!当功能分支的目的已实现且其质量令人满意时,就该将该分支合并回该master分支了。凭直觉,我们可以通过完成此壮举git merge

首先,我们检出master分支,然后执行git merge BRANCH_NAME

《一个简单的Git分支工作流程》

注意星号的位置!我们现在在master分支中。现在合并account-model分支并将我们的更改推送到远程。

《一个简单的Git分支工作流程》

简而言之,我们已经完成了以下工作:

  1. $ git checkout -b account-model
  2. 一个半小时的思考和辛劳经历了…
  3. $ git add .
  4. $ git commit -m "Create basic Account migration and model"
  5. $ git checkout master
  6. $ git merge account-model

全部放在一起

现在,我们知道如何保存进度并在安全的地方创建进度,然后再将其作为项目的持久部分。现在让我们看一下这个工作流程如何与其他人一起玩。

假设我们正在与此项目的其他人合作。例如,他们将充实我们先前创建的帐户模型的控制器。他们离开,克隆(又名下载)我们的存储库,进行工作,忠实地提交,并将其更改推送到远程。如果我们想在他们机器上看到他们的工作,我们需要用来遥控器上的东西git pull

《一个简单的Git分支工作流程》

请注意,星号在master分支上,在我们的同事分支后面两个提交。我们的同事尚未完成工作,因此我们决定在单独的分支上使用单独的功能。我们这样做,并取得了一些值得付出的进展。

《一个简单的Git分支工作流程》

同时,我们的同事完成了并向分支机构推送了最后一次提交。我们及时拉动它以与时并进。

《一个简单的Git分支工作流程》

我们完成了工作,并决定是时候将所有内容放到一起,合并并(当然!)将结果推送到远程,以便我们的团队可以从中进行工作。

《一个简单的Git分支工作流程》

此过程是Git分支工作流程的基本单元。团队项目的每个成员都在适合项目的特定功能,组件或变体的分支上工作。做出承诺并推动每个里程碑。当一个特定的分支机构达到其目的并准备大量使用时,它将合并到master分支机构中。并不断下去!

解决冲突

总是会遇到冲突。解决这些问题超出了本博客文章的范围,但是这里提供了避免它们的提示以及用于处理它们的资源。

为了避免合并冲突,每个分支都包含仅与单独文件有关的更改。如果合并的分支都具有相同文件的变体,那么该是解决冲突的时候了。

解决合并冲突远非可怕!Visual Studio CodeGithub(如果您是在仓库上发出拉取请求,而不是本地合并),甚至您的本机终端也提供了用于编辑和解决冲突文件之间差异的工具。

怎么办?

当我们刚开始学习Git时,我们中的许多人只是出于通过我们的工作或互联网与他人交互的需求而这样做。也许我们想在Github上托管我们的项目,并与世界分享我们的工作!也许我们只能通过通过Bitbucket访问别人的作品来破解它。

严格来说,使用Git无需插入Web。无论我们是单独工作,成对工作还是成小组工作,一些指南和少量的Git命令都将增强我们组织,协作并更充分地实现我们项目愿景的能力。无论您启动或贡献了什么软件,即使您是一个人工作,也要小心使用最佳实践来使用Git,以便从管理良好的项目中获益。

资源和参考

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注