git 如何提取别人在你的分支上提交的提交?

63lcw9qa  于 2023-05-05  发布在  Git
关注(0)|答案(7)|浏览(258)

我在一个分支上做了一些工作:WIP-my-branch.我推了我的分支并做了一个PR(还没有被批准b/c它正在进行中)。我被卡住了,然后请求帮助;一个同事然后把一个提交推到了我的分支上。我可以在Github上看到她的提交,但是在我的分支上执行git pull并不能得到她的提交(分支上最近的提交)。我怎么能做到这一点?

xfb7svmp

xfb7svmp1#

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

0sgqnhkj

0sgqnhkj2#

我认为它有助于认识到分支是 * 特定于一个特定的Git存储库 *。您的同事未在您的分支上提交。她在不同的分支上做了一个,可能有也可能没有相同的名字。
您正在使用 * 两个 * 存储库。一个是你的,在你的电脑上。第二个是GitHub上的。这两个不同的存储库有不同的分支。这些不同的分支可能有相同的 * 名称 *,一旦你获取(从它们获取提交)或推送(向它们发送提交),不同的分支也可以有相同的提交:在那之后,你可以称它们为“相同的”,但它们在一个重要的方面仍然不同:改变一个不会影响另一个(还没有)。
您的同事也(可能)使用至少两个存储库:一个在GitHub上,一个在GitHub上。你可能无法直接联系到她的,但你应该可以联系到GitHub上的那个。GitHub上的那个甚至可能是你已经在使用的GitHub上的那个。
如果你的同事在GitHub上使用的是你在GitHub上使用的同一个仓库,那么你在自己的Git中已经有了这个仓库的名字。你叫它origin。您可以运行git fetch origin来从origin获取提交。另一个Git--GitHub上的那个--里面有各种各样的分支名称。你的Git会得到他们的提交,然后在你的仓库中将他们的分支 * 重命名 * 为origin/*whatever*,这样无论他们 * 有什么名字,你的都是不同的-你的不是以origin/开头的。(从技术上讲,您的origin/*名称是 * 远程跟踪名称 * 而不是分支名称,但重要的是它们以origin/开头。
如果你的同事在GitHub上使用了一个 * 不同的 * 仓库,你需要在你自己的Git仓库中创建另一个 * 远程仓库 *:

git remote add <name> <url>

其中 * name * 部分是您想使用的任何名称-我不知道您同事的名称;我在这里只使用alice-* url * 部分是在GitHub上访问该Git所需的URL:

git remote add alice <url>

现在你可以运行:

git fetch alice

这将带来仓库中你没有的任何提交,并将这些分支重命名为alice/masteralice/develop,等等-基本上,所有新的“远程跟踪”alice/*名称。
现在你会得到她的承诺。她在自己的存储库中制作了它,在那里它是完全私有的,但她随后将其发送到她的GitHub存储库,在那里你可以得到它。你得到了它,现在它在你自己的仓库里,所以现在你可以使用它了。如果Alice在名为WIP-my-branch的分支上创建了它,然后将其发送到名为WIP-my-branch的分支下的GitHub存储库中,那么现在它就在 youralice/WIP-my-branch下。

qrjkbowd

qrjkbowd3#

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

git remote add coworker_remote url_to_their_repo
git remote update
git merge coworker_remote/WIP-my-branch
9lowa7mx

9lowa7mx4#

git merge origin/coworkers_branch

你可以在Github上找到你的coworkers_branch。在您的PR中,在Commits下,单击您同事的commit。它们的本地分支名称通常会列在提交消息标题的左侧。

gmxoilav

gmxoilav5#

git fetch origin <your_branch_name>

和我一起工作

9o685dep

9o685dep6#

我通常做以下几点,如果我错了请纠正我

  1. git checkout master
  2. git pull
  3. git checkout<my_branch>
  4. git pull
  5. git merge master
f0brbegy

f0brbegy7#

git merge〈你同事的commit_hash〉

相关问题