如果你想从--bare
repo A
(在某个服务器上)发送一个补丁到B
(and C
, D
, E
...),主要的问题是弄清楚这个:“ A
do B
, C
, D
, ... 有哪些版本,他们应该使用哪些版本有?”
例如,假设有人在A
做:
git push origin master:experiment_for_joe devel:featureX
把他在本地master
分支上的东西拿给乔(也许在以某种方式在他自己的仓库中移动它之前),然后把他在他的devel
分支上的东西拿走并featureX
在服务器上命名。
Experiment_for_joe 和/或 featureX 的某些版本是否适用B
?或者也许只是为了D
?
假设答案是“不,永远不会,只有进去的东西才会deploy
出来”。很简单,但现在问题的另一半:如果在B
有人向. 如果版本与 repo中的任何版本都不匹配怎么办?deploy
C
D
A
假设您可以解决所有这些问题,并着手解决以下问题:
devel on A is now the latest
B has $on_B which is definitely in A
C has $on_C which is definitely in A
(等等),然后——假设B
,C
等都是 repos 并且你希望所有中间提交都显示出来(如果没有,你可以得到一个大补丁):
git format-patch $on_B..devel
B
为您提供同步所需的一系列补丁,并且:
git format-patch $on_C..devel
为您提供同步所需的一系列补丁C
,等等。(如果目标回购“不真正匹配”,这些可能需要按摩才能正确应用。)
(如果它们不是 repos,请使用git diff $on_B devel
或git diff-tree
和/或一些底层管道位,以获得“如何将正在发生的内容更改为正在发生的内容”的直接映射B
。devel
但是,如果这里出现任何问题,两者都可以退出同步并且很难恢复。如果B
,C
等是repos,你有更多的机会弄清楚你需要做什么来恢复。)