单人开发者的Github工作流程

15

我希望能够得到有关我的git工作流程的反馈,因为这是我第一次使用它,尽管我已经阅读了各种文章和Stack Overflow问题,但我不确定我的过程是否正确。这是我的当前工作流程(请注意,我正在使用Github for Windows应用程序进行所有git交互):

  1. 决定我要实现的下一个功能是什么。
  2. 使用适当描述的名称创建一个新分支来实现该功能。我通过单击Github for Windows中的分支按钮并输入新名称来完成此操作。
  3. 编写一些代码。
  4. 将这些更改提交到我的新分支中。
  5. 再编写一些代码。
  6. 将这些更改提交到我的新分支中。
  7. 我完成了功能的实现,因此我想将我的更改合并回主分支。所以我点击分支标题下面的“管理”按钮。
  8. 将新分支合并到主分支中。
  9. 删除新分支。

我对步骤7之前的过程感到非常满意,但在步骤7时有点困惑。我认为我的困惑在于我试图使用Github for Windows应用程序而不是使用命令行。应用程序似乎确实使事情变得更容易,但是我理解上的某些命令/说明与您在应用程序中执行的操作之间存在一些不协调。

让我提出一些具体问题:

  1. 我的工作流程实际上是否正确?如果不是,有什么问题,并且如何改进?
  2. 我应该“发布”我的更改到新分支吗?我的理解是这相当于在命令行中运行git push。这是真的吗?如果是这样,那么我认为我只想在完成功能或其处于良好状态时才这样做?
  3. 当我将其合并到主分支后,我应该删除该分支还是将其永远留下来?
  4. 完成合并后,我需要发布主分支吗?还是这是隐含的?
  5. 我有时无法执行合并并收到此错误消息:
  6. 无法合并

    将'test'分支合并到'master'分支失败。您可能需要打开shell并调试此repo的状态。

在此之前,我能够切换到主分支并将新分支合并到主分支,但现在不再起作用。无论我在哪个分支中,都无法合并这两个分支。两者已同步,我已发布了test分支的所有更改。我应该在shell中输入什么来找出为什么无法合并这些分支?

供参考,以下是促使我的流程的主要链接:

  1. Scott Chacon关于Gitub工作流程的文章
  2. 本地存储库上单个开发人员的Git工作流程
  3. 单个用户的Git工作流程
1个回答

5
您所描述的似乎是一个常见的分支工作流程,即使多个开发人员在同一代码库上工作也非常有效。这基本上完全由git flow覆盖,它是git命令行的扩展,用于自动化某些步骤。值得一试。
我不太喜欢使用git的UI工具。我大多数时间都使用命令行。因此,我对GitHub for Windows并不熟悉。但我敢打赌你的问题是因为你的合并不再是快进了。这将需要手动合并步骤,而该工具(afaik)没有覆盖。
将分支保留在合并到上游后没有强烈的理由。但其中一个原因是跟踪哪些提交进入了某个功能。如果您决定保留它们,我建议发布这些分支。您不依赖于本地机器上的代码。保留分支不会使您的存储库变得更大,但会污染视线。大多数情况下,提交已经存在于您的上游分支中。
在合并后,您必须发布(推送)您的主分支。

为了熟悉git命令行工具,我建议从GitHub的Git和GitHub介绍开始,并跟随他们的链接引用以获取更多详细信息。

希望有所帮助。


谢谢 - 很高兴知道我走在正确的轨道上!不过,我对分支还有点困惑,我认为这就是我的合并头疼的原因所在。当我在 Github for Windows 中创建一个新分支时,我应该期望它会在某个地方创建一个新目录吗?因为如果它不这样做,那么我不就是在编辑我的主分支中的代码吗? - Stuart Leyland-Cole
Git将所有内容存储在.git文件夹中的一堆增量中。因此,当您创建一个新分支时,就像您正在使用主/克隆分支的副本一样。但是它们都在同一个文件夹中(提交一些更改,翻转分支并重新打开文件即可查看)。请注意所选的分支,因为很容易开始编写大量内容,忘记您没有切换分支,最终将提交到主分支而不是功能分支。这就是存储库非常有用的地方。 - yellottyellott
抱歉没有早些时候就将这个作为我的问题的答案接受,我似乎错过了你最后一个回答中回答了我所有的问题。非常感谢! - Stuart Leyland-Cole

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接