0

git サーバーがあるとします。ユーザー X はファイル A、B、C、D、E を追加してコミットしたいのに対し、ユーザー Y は F、G、H、I、J を追加してコミットしたいと考えています。

それらが同時に動作する場合、 Y によって追加されたファイルがユーザー X のコミットに混合されるように、およびプロセスgit add F, G, H, I, J中に実行される可能性があります (特に、ファイル A ~ E が大きく、追加および追加に多くの時間がかかる場合)。専念)?git add A, B, C, D, Ecommit -m 'user X commit'

可能であれば、これに対する解決策はありますか?

4

1 に答える 1

1

git addまず、入力してから実行するまでに遅延がありますgit commit。したがって、git add「同時に」実行されたと仮定すると、git commit が実行される最初のユーザーはすべてのファイルをコミットし、他のユーザーにはコミットするものが何もないというエラーが発行されます。

これはすべて、両方の「ユーザー」が同じディレクトリで同じ「ユーザー」として動作することを前提としています。これは、各「ユーザー」が独自のユーザーであり、共通リポジトリの独自のクローン バージョンで操作する実際の git ワークフローとは何の関係もありません。あなたが言及している問題は、git pushレベルで発生する可能性があります。ただし、リモートリポジトリで「プッシュ」を受信した最初のユーザーは期待どおりに更新され、他のユーザーには「プッシュが拒否されました」というエラーが発行されます。これは、ツリーに矛盾があり、「遅い」ユーザーであるためです。他のユーザーのコミットに変更を適用する必要があります。競合がないことが保証されていれば、解決するのは簡単です。

http://www.danielmiessler.com/study/git/またはその他の git チュートリアルを読むことをお勧めします。

多くの人が同時にアクセスする可能性のあるバージョン管理された展開について話している場合は、ワークフローを変更して、プッシュを介して変更を公開し、一般的に使用されるサーバーに展開する外部リポジトリを使用することを強くお勧めします経由git cloneしてからgit pull

  user1 local repo git push to --> common repo <-- git clone/pull on common server
  user2 local repo git push to ----^
于 2013-10-29T17:22:19.033 に答える