我们是两个工程师在同一个 github repo 上工作。其他人在此 repo 上创建分支并提交 PR
下面是完成的步骤
合并https://github.com/userNaame/projectName 的分支“master”
请澄清我是否在这里做错了什么以及如何避免这种提交消息?
的命令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
以将您的新提交发送到origin
GitHub 上的 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 的第三个存储库只是充当共享点。