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

vik*_*mvi 1 git github

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

下面是完成的步骤

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

合并https://github.com/userNaame/projectName 的分支“master”

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

tor*_*rek 5

的命令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>
Run Code Online (Sandbox Code Playgroud)

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

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

          ?--?--?
         /       \
...--o--o         ?   <-- master (HEAD)
         \       /
          o-----o   <-- origin/master
Run Code Online (Sandbox Code Playgroud)

你的承诺——你自己做的——在第一行;共享提交位于左中行;和他们提交-在你之后他们做了那些克隆,沿底行。最右边的提交是您刚刚进行的新合并提交。我已将您所拥有的提交标记为实心黑色圆圈?

您现在运行git push origin master以将您的新提交发送到originGitHub 上的 Git 。这会将提交该有他们不这样做,然后问GitHub的Git的设置 master指向合并提交。如果是这样,您的 Git 会记住这一点,因此您自己的图表现在看起来像这样:

          ?--?--?
         /       \
...--o--o         ?   <-- master (HEAD), origin/master
         \       /
          o-----o
Run Code Online (Sandbox Code Playgroud)

当其他人运行git fetch到 GitHub 上保存另一个副本的 Git 时,GitHub 的 Gitmaster现在将指向同一个最终提交,因此您将看到Merge branch 'master' of <url>this 最尖端提交的日志消息master


考虑所有这些时,请记住现在这里涉及三个Git 存储库。有 GitHub 的 Git,其中包含您使用git push. 这是您同事的 Git,其中包含您的同事从 GitHub 更新的存储库副本,以及您的同事git push用来将更新发送GitHub的副本。还有你自己的 Git,它保存着你从 GitHub 获得的存储库的副本,你git push用来将更新发送到 GitHub。GitHub 的第三个存储库只是充当共享点