gitの長距離分枝の役割とローカル分枝の違いは何ですか?


皆さんが経験したことがありますか?新しい支店に切り替えてコードを提出したい時、いつもこのような間違いがあります。

私たちは日記の英語を翻訳して言います。  現在のブランチには上流のブランチが設定されていません。そして、gitは次の行のコードを実行して、リモートの上流を設定することができます。これで成功しました。
もちろん、私達がプッシュする時に実行するのがgit pushではなく、後にオリジンを加えるとshが成功します。例えばこうです

なぜですか?このオリジナルブランチはどういう意味ですか?今日はこの問題について話し合いましょう。
リモートブランチ
長距離ブランチは実は長距離コード倉庫の中のブランチです。例えば、私達のrepoがgithubが存在するなら、この長距離倉庫はgithubです。gitlabが存在するなら、この倉庫はgitlabです。他の倉庫なら同じです。
私達がgit cloneを使う時、gitは自動的に
このリモートのrepoを「origgin」と名付けて、すべてのデータを引き出した後、「master」に向けたポインタを作成します。「origgin/master」と名づけて、その後、同じ位置を指すポインタを地元で作成します。「master」と名付けて、リモートのmasterと区別します。
つまり、オリジンとは遠隔倉庫のことを意味します。マークだけで、デフォルトの分岐をマスターと呼びます。それ自体は特別な意味がありません。私達が望むなら他の名前も付けられますが、普通は誰もやっていません。例えば、私達はcloneの時に一つのパラメータを追加できます。oはリモートのrepoに別名を付けます。
このようにリモートのこのrepoはchengzhiと名づけられ、元のorignに代わっています。しかし、このようにして、詰めてコストを増加させる以外に、何の役にも立たないので、このようにすることを勧めません。
操作コマンド
前にgitを紹介した時にリモートrepoの役割を話したことがあります。ローカルコードの乱れを防ぐためにリモートでバックアップを取っています。これでコードが壊れても、バックアップがあります。
したがって、リモートのrepoの最大の役割はバックアップを保持することです。バックアップを保持するためには、ローカルとリモートのコードのインタラクションは避けられません。git pullはリモートから取って、git pushはリモートに送りますが、詳細はよく分かりません。これまで長距離支店を詳しく紹介したことがないので、深く入ることができませんでした。今日はちょうどこの話題について話しました。
コード引取
コードの引き出しといえば、コードの引き出しといえば、みんなの第一反応はgit pullかもしれません。しかし、実際には、git pullは厳密な意味でのコード引取命令ではありません。少なくとも、最も細かい粒度ではなく、git pullよりも細かい粒度の操作があります。それはつまり、git fetchです。

git clone -o chengzhi
実際にgit fetchは本当のコード引取の操作です。その役割はリモートの変更をローカルに同期させることです。私たちがgit fetch origginを実行する時、ここのorigginはリモートの名前を指しています。もしあなたが複数のリモートがあるなら、指定する必要があります。それ以外は書かなくてもいいです。リモートのすべての変更とブランチをローカルに引き出して、オリジン/xxxと名づけます。オリジンのブランチは私達がgit branchでは見えません。ローカルのブランチ名しか見えません。見たいならgit branch-rを使ってもいいです。
私たちは、git checkoutを使用して過去を切り替えると、origginを追加する必要はなく、gitは自動的にローカルの分岐ポインタを生成し、同様のノードを指す。それは私たちが実行したgit checkout-b test origgin/testに相当します。ここまで言うとギトホールとギトフェッチの違いを指摘してください。両方とも表面的にはリモートからの変更を引き出しています。しかし、両者の対象範囲は違っています。git fetchはリモートのすべての変更に対して、git pullは現在のブランチに対してのみ対応するリモートブランチです。また、git pullを実行すると、リモートの変更mergeをローカルの分岐に移行します。つまり、一歩多くの操作があります。
コード転送
コードを押して送ったというと、私たちの最初の問題に戻りますが、どんな場合にgit pushでいいですか?
ここで一つの機構に関連しています。ローカルブランチは自動的に遠隔的に同期されません。例えば、遠隔地にある人がtestブランチを作っています。私たちは地元に引っぱり出してオリジン/testといいます。自分でtest分岐を作ってもいいです。井戸水は川の水を犯さないです。これも便利さのためです。直接に名前で写すと、潜在的な衝突があるかもしれません。また、複数のリモートrepoが存在する可能性がありますので、プッシュする時にも様々な選択があります。
一番完璧なプッシュ命令はこのように書くべきです。

git push origin test:cz/test
ここでは変な書き方のtest:cz/testを使っています。ローカルのtest分岐をリモートにcz/test分岐として送るという意味です。ローカルの名前がリモートと同じであれば、略して書いてもいいです。
現在のtest分岐の上流がリモートのtest、またはローカルのtestがorigginからコピーされた場合、直接git pushができます。これは自動的にローカルの分岐をリモートに関連付けるので、多くの便利性があります。実は私たちの多くのプッシュ操作はこのように行われています。このコマンドは、ローカルブランチとリモートマッピングを使用することができます。

git branch --set-upstream-to master origin/master
これは地元のマスターとリモートのマスターを関連付けるという意味です。関連付けを設定した後、git pushとgit pullだけでこの分岐を更新してプッシュできます。便利です。
長距離分岐についてはまだいくつかの内容がありますが、例えば長距離の分岐をどうやって追跡し、どうやって削除しますか?これらの内容はほとんど使えないので、無理に覚えても忘れてしまうので、余計な説明はしません。
ここでgitの長距離ブランチの役割とローカルの違いについての記事を紹介します。関連git長距離ブランチの内容は以前の文章を検索してください。または下記の関連記事を引き続きご覧ください。これからもよろしくお願いします。