在我们的团队中,只有人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人的最新更改。不幸的是,情况并非如此。
答案 0 :(得分:1)
大多数组织似乎都遵循常规流程。以下步骤将帮助您实现这一目标:
有关更多详细信息,请参见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可以获取以获取更新的“所有内容的副本”,然后他可以通过创建合并来执行合并master
和feature
中的合并提交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
中