2 つの Git クローンは、互いを表すリモート追跡ブランチがなくても、互いにプッシュ/プルできますか? ほとんどの場合、それらが非常に便利であることはわかっていますが、ときどきセカンダリ リポジトリ (ベア サーバーではない) 間でプル/プッシュしたい場合があり、混乱させたくありません。リモート トラッキング ブランチを気にしない場合、それを削除したり、まったく作成しないようにすることはできますか?
3 に答える
リモート追跡ブランチは必要ありません。これらは、(a) git push と pull にデフォルトの動作を与え、(b) git status 出力のリモート ブランチとは対照的に、ローカル ブランチのステータスに関する情報を受け取るための便利なものです。Git を使用する必要はありません。
物をごちゃごちゃさせたくない
リモート追跡ブランチを設定しても、まったく混乱しないことに注意してください。ローカル リポジトリの構成ファイルに 3 行を追加するだけです。他には何もしません。実行中のすべての追加情報git status
は、コマンドが実行されたときにのみ生成されます。何も保存されていないか、そうでなければ物事が散らかっています。そのため、必要がなくても、通常はリモート追跡ブランチを設定しても問題ありません。
ローカル ブランチでリモート ブランチの変更を追跡しない場合:
ブランチでリモート ブランチを追跡する必要はありません。それはあなたが持っていないいくつかの利点を持つ便利さです。git status
あなたのブランチがオリジンよりxコミット先であると述べるなど。
追跡ブランチを設定しなくても、リモートを使用できなくなるわけではありません。URL を入力する代わりに、すべてのコマンドで引き続きリモートを使用できます。
どのブランチが追跡されているかを確認するには、 を使用しますgit branch -avv
。リモート ブランチを追跡しているブランチは、コミット ハッシュの左側にリモート ブランチをリストします。
ブランチを削除して追跡なしで再作成する以外に、ブランチから追跡を削除する方法がわかりません。
リモート ブランチのローカル コピーを意味する場合 ( で表示git branch -r
):
これらは -- で削除できますがgit branch -dr <remote/branch>
、次にプルまたはフェッチしたときに戻ってきます。それらはgit fetch ...
動作するために必要であり、 をgit pull ...
使用しますgit fetch ...
。毎回手動で削除するか、スクリプトを作成する必要がありました。
ただし、リポジトリに実際の混乱やオーバーヘッドを追加することはありません。リモート追跡ブランチは、ディスク上では、コミット ハッシュを含む単なるファイルです。コミットは別の場所に保存されます。おそらく、それらを取得したかったため、1 つ以上のローカル ブランチにマージまたはリベースされています。
この情報は、リモートの代わりに URL を使用して取得できます。これは、FETCH_HEAD ファイル以外の場所でフェッチされたものの記録を作成しません。このファイルはフェッチごとにオーバーライドされるため、別のフェッチが実行される前にローカル ブランチにマージまたはリベースされていないと、コミット データが失われます。リモート トラッキング ブランチは、フェッチされたデータがガベージ コレクションされないようにするために存在します。
はい、リモコンを追加しないだけで簡単に実現できます。
リポジトリ間でプッシュ/プルする通常の方法は ですがgit remote add NAME URL
、これは便利なだけです (また、リモート トラッキング ブランチにも必要です)。
を使用する代わりに、プルを同じように使用git pull REMOTE_NAME BRANCH
できます。git pull URL BRANCH
基本的に、ほとんどの git コマンドでリモートの名前をリポジトリの URL に置き換えることができます。