如何提取其他人在您的分支上所做的提交?

Ala*_*anH 11 git github

我在分支上完成了一些工作:WIP-my-branch。我推了我的分支并做了一个 PR(尚未获得批准,因为它正在进行中)。我被困住了,然后寻求帮助;然后,一位同事将提交推到了我的分支上。我可以在 Github 上看到她的提交,但git pull在我的分支上执行操作并不能得到她的提交(分支上的最新提交)。我怎样才能做到这一点?

小智 9

您需要更新您的分支 git pull origin您的分支名称


tor*_*rek 7

我认为这有助于认识到分支特定于一个特定的 Git 存储库。您的同事没有在您的分支上做出提交。她在另一根可能同名也可能不同的树枝上做了一个

\n\n

您正在使用两个存储库。一个是你的,在你的电脑上。第二个是GitHub上的。这两个不同的存储库有不同的分支。这些不同的分支可能具有相同的名称,一旦您获取(从它们获取提交)或推送(向它们发送提交),不同的分支也可以具有相同的提交:之后,您可以称它们为“相同”,但它们在一个重要方面仍然不同:改变一个不会影响另一个(还)。

\n\n

您的同事(可能)也至少使用两个存储库:她的和 GitHub 上的一个。您可能无法直接联系她,但您应该能够联系 GitHub 上的联系方式。GitHub 上的那个甚至可能与您已经使用的 GitHub 上的那个相同。

\n\n

如果您的同事在 GitHub 上使用的存储库与您在 GitHub 上使用的存储库相同,则您已经在自己的 Git 中拥有该存储库的名称。你管它叫吧origin。您可以运行git fetch origin以获取来自 的提交origin。另一个 Git\xe2\x80\x94(GitHub\xe2\x80\x94 上的那个)包含各种分支名称。您的 Git 将获取他们的提交,然后将其分支重命名为您的存储库中的名称,这样无论它们的名称是什么,您的名称都是不同的\xe2\x80\x94,您的名称不以. (从技术上讲,您的名称是远程跟踪名称而不是分支名称,但这里重要的是它们以 . 开头。)origin/whateverorigin/origin/*origin/

\n\n

如果您的同事在 GitHub 上使用不同的存储库,您将需要在您自己的 Git 存储库中创建另一个远程存储库:

\n\n
git remote add <name> <url>\n
Run Code Online (Sandbox Code Playgroud)\n\n

其中该name部分是您想要使用的任何名称\xe2\x80\x94我不知道您同事的名字;我将alice在这里使用\xe2\x80\x94,这url部分是访问 GitHub 上的 Git 所需的 URL:

\n\n
git remote add alice <url>\n
Run Code Online (Sandbox Code Playgroud)\n\n

现在你可以运行:

\n\n
git fetch alice\n
Run Code Online (Sandbox Code Playgroud)\n\n

这将带来该存储库中您没有的任何提交,并将这些分支重命名为alice/masteralice/develop等\xe2\x80\x94 基本上,所有新的“远程跟踪”alice/*名称。

\n\n

现在你将得到她所做的承诺。她在自己的存储库中制作了它,该存储库是完全私有的,但她随后将其发送到她的 GitHub 存储库,您可以在那里获取它。您已经得到了它,现在它位于自己的存储库中,因此您现在可以使用它了。如果 Alice 在名为 的分支上创建了它WIP-my-branch,然后将其发送到名为 的分支下的她的 GitHub 存储库WIP-my-branch,那么现在它就位于您的 alice/WIP-my-branch.

\n


Enc*_*lon 2

您需要添加同事的遥控器并合并他们的更改。

git remote add coworker_remote url_to_their_repo
git remote update
git merge coworker_remote/WIP-my-branch
Run Code Online (Sandbox Code Playgroud)