在提交消息中合并https://github.com/...的分支“master”

问题描述 投票:0回答:1

我们是两个工程师在同一个github回购工作。其他人在此回购中创建分支并提交PR

以下是完成的步骤

  • 我在本地进行更改并直接提交到repo。
  • 上次合并PR并将最新更改发布到我当地的回购后
  • 当我提交新的更改时,我看到github有这个奇怪的消息

合并https://github.com/userNaame/projectName的分支'主人'

请澄清我在这里做错了什么以及如何避免这种提交消息?

git github
1个回答
2
投票

命令git pull,你们两个中至少有一个人使用它,为你运行另外两个Git命令。 (我在这里指的是“你”,但这可能是另一位工程师,或者你们两个可能正在轮流。想想“你们”代表“你们所有人”或“你们两个人”,即使只有一个你一次运行每个命令。)

git pull为你运行的第一个命令总是git fetch。这从另一个Git存储库获取提交。具体来说,它使用您命名的存储库 - 或默认情况下的origin - 来查找它们没有的提交,可能是因为在您运行git clone之后这些提交已添加到其存储库中。 Git将这些提交放入您的存储库副本中,所以现在您也可以使用它们。

git pull运行的第二个命令通常是git merge(您可以将其设置为运行不同的第二个命令,但显然您没有这样做)。当git pull运行git merge时,它提供,作为合并提交的日志消息:

Merge branch '<name>' of <url>

<name>部分是git pull告诉git fetch从其他Git获取的分支的名称。 <url>部分是git pull告诉git fetch联系的URL,以通过名称<name>找到提交。因此,如果你的分支将origin/master设置为其上游,你的git pull让你的Git在origin调用Git并从Git的master获得任何新的提交。然后你的git pull让你的Git合并这些提交,并带有消息Merge branch 'master' of ...

此时,您拥有他们(其他Git)的提交和您自己的提交,以及将两组提交绑在一起的合并提交。假设您使用自己的master,这看起来像这样:

          ●--●--●
         /       \
...--o--o         ●   <-- master (HEAD)
         \       /
          o-----o   <-- origin/master

你的提交 - 你自己制作的 - 是排在最前面的;共享提交位于左中间行;并且他们的承诺 - 他们克隆后制作的 - 是沿着底行。最右边的提交是您刚刚进行的新合并提交。我已经标记了你拥有的提交,他们没有,就像坚实的黑色圆圈

您现在运行git push origin master将您的新提交发送到GitHub上的origin的Git。这会发送你没有的提交,然后要求GitHub的Git将其master设置为指向合并提交。如果它这样做,你的Git会记住这一点,所以你自己的图现在看起来像这样:

          ●--●--●
         /       \
...--o--o         ●   <-- master (HEAD), origin/master
         \       /
          o-----o

当其他人在GitHub上运行git fetch并保存另一个副本时,GitHub的Git的master现在将指向同一个最终提交,所以你会看到Merge branch 'master' of <url>作为这个master最尖端提交的日志消息。


在考虑所有这些时,请记住现在有三个Git存储库。有GitHub的Git,持有你使用git push更新的存储库的副本。有你的同事的Git,拿着你的同事从GitHub更新的存储库副本,你的同事使用git push向GitHub发送更新。还有你自己的Git,持有你从GitHub获得的存储库的副本,你可以使用git push将你的更新发送给GitHub。 GitHub的第三个存储库只是作为共享点。

© www.soinside.com 2019 - 2024. All rights reserved.