2

Linux サーバーに git リポジトリを作成しました。長い間、私は一人で作業していましたが、すべてがうまく機能していました。友人が参加したとき、彼は master ブランチしか見えないと不満を漏らしました。VMWare内でubuntuインスタンスも実行しているマシンでもこれを確認しましたが、実際にそうです。さらに混乱させるために、ubuntu マシンから新しいブランチをプッシュできました。これは、ubuntu クライアント内からのみ表示されますが、Windows のクライアントでは表示されません。

したがって、私が直面している問題は、2 つの (私の場合は論理的に) 別々のマシンからですが、同じリポジトリに対して異なるブランチが表示されることです。

私は元々、Windows で Git bash を使用してブランチをプッシュしました。そこでgit branch -rを実行すると、次のようになります。

origin/HEAD -> origin/master
origin/develop
origin/develop2
origin/master

ubuntu git branch -rで取得します

origin/HEAD -> origin/master
origin/develop3
origin/master

好きなだけgit fetchを実行できます。単純に、別のリポジトリ (共有マスター ブランチは別として) に対して動作しているように動作します。何らかの方法で git サーバーの設定を誤った可能性があります。または、キーの問題である可能性があります。不明な点があり、提案が必要です。ありがとう

4

1 に答える 1

4

git branch -rは、ローカル リポジトリ内に保存されているリモート ブランチのみを一覧表示することに注意してください。したがって、これらのブランチがリモート リポジトリ自体にそのように存在するとは限りません。ただし、デフォルトでgit fetchは、リモート リポジトリからすべてのブランチを取得し、ローカル リポジトリにリモート参照を追加します。したがって、リモートにローカルに存在するすべてのブランチも存在します。

ただし、作成されたが後でリモート リポジトリから削除されたリモート ブランチをクリーンアップすることgit fetchはできません。これを行うには、 を使用しますgit fetch origin --prune。これにより、Git がリモート リポジトリのリモート ブランチ リストを更新します。

したがって、枝が後で削除された場合は、そのように気付くでしょう。これでリモート ブランチ リストが同期されない場合は、リモート リポジトリが実際には同じではない可能性があります。を使用git remote -vして、リモート構成のリストを取得し、両方のマシンで同じかどうかを再確認できます。

于 2013-01-19T00:12:33.783 に答える