私たちはsvnからgitへの移行中です。私たちのリモートオフィスの1つにローカルキャッシュリポジトリを設定してそこのデベロッパー遅いネットワークを介してメインリポジトリから押して引き出す必要はありません。マルチレベルgitワークフローの設定方法
したがって、基本的なプロセスでは、localCacheはメインのリポジトリから定期的にフェッチし、devsはlocalCacheからフェッチします。 DevsはlocalCacheにプッシュし、機能を完了するとlocalCacheからメインにプッシュします。
なLocalCacheは、これは私も同じ枝にメインから変更がある場合なLocalCacheから変更をプッシュしたいとき以外はOKに動作するようです--mirror
として設定されています。私がメインからプッシュする前にフェッチすると、メインからのブランチは開発者からプッシュされたものを上書きします。私がフェッチする前にmainにプッシュすると、localCacheからのブランチがmainを上書きします。どちらの場合でも、gitは--forceを指定していなくても "強制的な更新"メッセージを表示します。
これは私が間違った方法でそれについて行くと思います。私はこれがgitがうまくいくはずのものだと確信していますが、それは私にとってスムーズなワークフローではありません。 gitブックの "分散されたワークフロー"セクションでは、彼らが記述したすべてのワークフローは、開発者が常に「メイン」から抜け出していますが、それはまさに私が避けようとしているものです。
なぜlocalCacheにプッシュする必要があるのですか。また、私はgitが簡単に "上書き"しないと確信しています。セットアップとワークフローをもう少し詳しく説明してもらえますか? – coredump
@coredump - mainに他の変更が加えられた理由は、すべての開発者がlocalCacheを使用しているわけではありません。私が上書きすると、私はブランチポインタが上書きされたことを意味します。ファイルは失われませんが、コミットにはアクセスできなくなります。次のdevは、ブランチポインタが上書きされたrepo(mainまたはlocalCache)のいずれかから引き抜こうとすると、アクセスできない変更をマージする必要があります。問題の本質は、メインにプッシュする時点でlocalCacheでこのマージを行いたいのですが、localCacheはミラークローンでなければならず、これはマージをサポートできません。 – Andy