如何从远程存储库获取最新提交?

时间:2019-04-19 14:37:01

标签: git

在我们的团队中,只有人B被允许将更改推送到我们的远程存储库。其他开发人员(例如人A)会创建该远程存储库的分支。人员B必须照顾人员A所做的更改,这些更改最终存储在远程存储库中。

假设某人A为其分叉的仓库做出了承诺。 然后,人B克隆人A的仓库。 人A对他的仓库进行了一些更改。然后,人员B想要从他先前从人员A克隆的仓库中提取这些更改。这允许人员B将人员A的更改推送到远程仓库中。 可能是人A必须进行一些其他更改。人员B也必须能够拉出这些更改并将其推送到远程存储库。

我们不确定如何使用git完成此操作。有提示吗?

这些是人B试图执行的命令:

git clone reponame-from-person-a.git
cd reponame-from-person-a
git checkout branch-from-person-a
git commit --amend --author="Person B <person.b@company.com>"
git remote remove origin
git remote add origin reponame-from-person-b.git
git push --set-upstream origin branch-from-person-a
git push -f

然后,当人A进行其他更改时,人B尝试以下操作:

git pull

我们期望的是,现在拉取了A人的最新更改。不幸的是,情况并非如此。

3 个答案:

答案 0 :(得分:1)

大多数组织似乎都遵循常规流程。以下步骤将帮助您实现这一目标:

  • 人员A提交更改并打开一个请求请求,说明应从叉式仓库的哪个分支合并到远程仓库(人员B的仓库)的哪个分支
  • 人员B审核并合并更改。

有关更多详细信息,请参见this

答案 1 :(得分:0)

不确定您的团队如何工作,但从未见过这种工作流程。人B不应克隆人A的仓库。 我建议您查看this简单的文章!

答案 2 :(得分:0)

由于git是一个分布式 VCS,因此在每个人都获得副本之后,不必进行所有克隆。

例如:

Origin:
      master
        |
A---B---C

人员A派生并创建feature分支:

Person A:
  origin/master
        |
A---B---C---D---E
                |
             feature

继续前进,让A人将其推到原点:

Origin:
      master
        |
A---B---C---D---E
                |
             feature

feature将在远程服务器上,但是更改origin/master中没有,因为您已经定义了只有人B才能实现master中的更改。远程服务器上feature的存在根本不影响origin/master

在这一点上,有权将feature合并到master中的人B可以获取以获取更新的“所有内容的副本”,然后他可以通过创建合并来执行合并masterfeature中的合并提交F:

Person B:
  origin/master
        |
A---B---C-------F
         \     /
          D---E
              |
           feature

请注意,更改仍未在origin/master上进行。到目前为止,所有更改仅在人员B的本地存储库的master分支上:

Person B:
origin/master  master
        |       |
A---B---C-------F
         \     /
          D---E
              |
           feature

更改尚未完成{em> ,origin/master上没有。 (我正在逐步分解)。只有在B使用者将master推到Origin之后,它才会在Origin上进行更新,只有B才允许这样做:

Origin:
              master
                |
A---B---C-------F
         \     /
          D---E
              |
           feature

在整个过程中,将跟踪作者和提交者。此时任何获取存储库的人都将看到由人A编写的feature已由人B合并并合并到master