这些 git 命令究竟做了什么?

What do these git commands exactly do?

我正在为一个开源项目做贡献,我知道以下是 git 工作流程的标准。我需要一个清晰的认识。这取自文档:

  1. 安装我们的开发环境
  2. 设置 mozilla 远程 ($ git remote add mozilla git://github.com/mozilla/kuma.git)
  3. 为错误创建分支 ($ git checkout -b new-issue-888888) 在 bug 分支上开发。

[时间流逝,mozilla/kuma 存储库积累了新的提交]

  1. 将更改提交到错误分支 ($ git add . ; git commit -m 'fix bug 888888 - commit message')
  2. 获取 mozilla ($ git fetch mozilla)
  3. 更新本地主机($ git checkout master; git pull mozilla master

重复步骤 4-7 直到开发完成

  1. Rebase 问题分支 ($ git checkout new-issue-888888; git rebase master)
  2. 将分支推送到 GitHub ($ git push origin new-issue-888888)
  3. 发出拉取请求(单击拉取请求按钮)

虽然我已经理解了大部分。从 #1 开始,我 fork 了 kuma 并将其克隆到我的本地机器上。这会设置一个远程 origin 回到我克隆的地方。 #2- 原始仓库已添加为 mozilla 远程。现在我有 2 个遥控器; originmozilla。 #3- 检查一个名为 new-issue-888888 的分支。到那时,mozilla 积累了新的提交。 #4,提交到 origin 的更改。从#5 开始不太清楚。不知道变基。

  1. 获取 mozilla ($ git fetch mozilla) 这会下载在原始 Mozilla 远程上所做的任何更改,但不会更改您的工作目录。为下面做准备。

  2. 更新本地主机($ git checkout master; git pull mozilla master) 这将切换到 master 分支并使用 mozilla/master 的提交更新它。现在您的主控已与远程主控同步。

  3. Rebase 问题分支 ($ git checkout new-issue-888888; git rebase master) 这将 master 上发生的更改(自您开始修补以来 Mozilla 的持续开发)集成到您的功能分支中。这是必需的,因此您的分支将是无冲突合并。

  4. 将分支推送到 GitHub ($ git push origin new-issue-888888) 现在你将你的功能推送到 github 上原始仓库的分支,这样你就可以从 UI.

  5. 发送 PR
  6. 发出拉取请求(单击拉取请求按钮) 最后将拉取请求发送到主仓库。如果你在 7-9 上太慢了,master 分支可能会继续前进。在这种情况下,gitbub 会通知你存在合并冲突,你需要从第 5 步重新开始。