【问题标题】:Git pull from two different branches in two different repositories into one local branchGit 从两个不同存储库中的两个不同分支拉入一个本地分支
【发布时间】:2022-03-04 08:19:46
【问题描述】:

我在本地克隆了一个 Git 存储库——称之为 A。这个存储库 A 有一个名为 aaa 的分支。我创建了一个新的本地分支--bbb。然后我创建了一个新的 GitHub 存储库(空)——称之为 B——并将 bbb 推送到 B。接下来,我将本地存储库的来源更改为指向 B。然后我还添加了一个名为“upstream”的远程到我的指向原始源 A 的本地存储库。我将此上游远程的“推送”url 设置为虚假(“无推送”),因为我不想意外地 push我的本地仓库回到 A。我只想将 A 中的 到我的本地仓库中。

在过渡期间,一些开发人员将提交对 A/aaa 的更改。其他人正在对 B/bbb 进行更改。

我希望能够将更改从 A/aaa pull 到我的本地 bbb 分支,然后 push 这些更改到 B/bbb 所以B 上的代码将包含团队提交给 A 的所有更改以及团队提交给 B 的所有更改。我还想将更改从 B/bbb 拉到我的本地 bbb 分支。本质上,我想暂时使用我的本地 repo 作为两者之间的桥梁,直到我们在未来某个时候停止使用 A。

我可以运行哪些 git 命令来完成此操作?(以及每个命令的作用是什么,所以我不只是盲目地复制命令)

到目前为止,我所尝试的一切都没有奏效,我认为我的理解中一定遗漏了一些关键要素。

【问题讨论】:

  • 一个本地存储库可以有两个或多个来源。为什么不将两个来源都设置为原点,git pull 来自两者(手动解决任何冲突),然后将git push 设置回B
  • 这就是我认为我所做的。我有multiple remotes。我怀疑是分支名称差异导致我在执行git pull 后看不到 A 的更改。

标签: git github git-push git-pull git-remote


【解决方案1】:

我希望能够将更改从 A/aaa 拉入我的本地 bbb 分支,然后将它们推送到 B/bbb,以便 B 上的代码将包含团队提交给 A 的所有更改以及所有团队致力于 B 的变化

您可以确定:

cd /path/to/local
git switch bbb
git branch -u A/aaa bbb
git push -u B bbb

【讨论】:

    【解决方案2】:

    最终,我删除了名为“upstream”的遥控器并重新添加了一个不同的名称,只是为了从头开始重复这些步骤。这些是我使用的有效命令:

    git remote add A_upstream <<url_to_git_repo>>
    git remote remove upstream
    git remote set-url --push A_upstream no-pushing
    git fetch --all
    git checkout bbb
    git merge A_upstream/aaa
    git pull origin
    git push origin
    

    第一个命令为 A 添加了一个新的遥控器。下一个命令删除了以前的遥控器,然后在下一步中,我再次将新遥控器的推送 URL 设置为虚假的,因为我只想从 A 中提取。下一步,fetch --all 从 A 和 B 获取所有内容,然后我使用下一个命令将来自 aaa 分支的更改合并到我的本地 bbb 分支中。来自 origin 的 pull 确保我是最新的 bbb 中的提交,然后 push to origin 确保我从 aaa 获得的更改转到 B。

    【讨论】:

      猜你喜欢
      • 2017-01-25
      • 1970-01-01
      • 2012-04-06
      • 2010-09-19
      • 1970-01-01
      • 2017-12-12
      • 2013-01-01
      • 2021-10-23
      • 2011-12-29
      相关资源
      最近更新 更多