これは、gitリモートリポジトリで作業を共有する方法です



ローカル作業をリモートリポジトリのチームと共有し、変更を追跡しながら管理する方法を学び、同期を維持します。

あなたの作品は、公開されて世界(またはあなたのチーム)と共有されると、より多くの価値が追加されます!!!

入門

行く ご存知のように、今日使用されている最も人気のあるバージョン管理ツールは お店追跡 そして バージョン どんな種類の データ
gitの主な機能のいくつかは 速度配布 自然、 セキュリティ 、無痛 分岐とマージ に加えて コラボレーティブ 複数の寄稿者の間で作業します。

ここから議論を始めましょう。gitがどのように役立つかに焦点を当てましょう。 コラボレーション 作業内容を同僚と共有して、全員がお互いのデータを破壊することなく同じコードで同時に作業できるようにします。
これは、 リモートリポジトリ 写真に入ってきます。
私はあなたがの芸術を習得したと思います あなたから 作業ディレクトリ (ファイルシステム)から ステージングエリア そして最後にそれをあなたにコミットします ローカルリポジトリ (データベース)。

これにより、データを次のレベルの「リモートリポジトリ」にプッシュして、リモートリポジトリに公開するようになります。

私のデータはすでにgitデータベースに保存されていませんか?

はい、そうです!ただし、下の図に示されているように、データはまだ ローカルデータベース お先にどうぞ コミット それはまだ同僚と共有されていません。
4層アーキテクチャ
この記事は、あなたから私たちのデータを取得することの間のギャップを埋めます ローカルリポジトリ そしてそれを次のレイヤーと呼ばれる リモートリポジトリ





リモートリポジトリとは

収集された情報のデータベースは、 共有 チームメイトに与えることで アクセス
理想的には または サーバ (ローカルまたはリモート)インターネットまたはローカルネットワーク上。
リモートリポジトリは、ローカルのgitリポジトリと同じですが、ローカルリポジトリのような作業コピーがないように、通常はベアリポジトリとして宣言されている点が異なります。
これは、リモートリポジトリで行われる直接の変更を制限するために行われます。

ベアリポジトリ 概念は、リモートリポジトリがそれを維持するための追加の利点です 保護 チームメンバー間でコードを共有するという唯一の目的で使用されます。
これは、「」を使用してリモートリポジトリをベアとして宣言することで実現されます。-ただgitリポジトリとして初期化するときの ‘フラグ。
そうすることで、リポジトリはgitメタデータ、つまり非表示の「.git」ディレクトリのみに保存されたgitオブジェクトを使用して作成され、誰もが直接データを追加できる作業コピーはありません。
コマンド:git init--bare。

これを念頭に置いて、今後、リモートリポジトリを管理する方法と、ローカル作業をリモートと同期する方法について説明します。



リモートリポジトリを作成する

何よりもまず、リモートリポジトリを配置する場所を決定する必要があります。
次のような人気のあるクラウドベースのgitホスティングリポジトリがかなりあります– GitLabBitBucketGitHubPERFORCE そして CloudForge いくつか例を挙げると。
この投稿では、GitHubを検討しています。これは、私が最初にgitリポジトリを保持し始めた場所だからです。まず、GitHubアカウントにサインインしてからサインインするだけです。 新しいリポジトリを作成する 、これにより、このリモートリポジトリを指すURLが作成されます。


Gitは、リポジトリURLをアドレス指定するためにssh、git、http、およびhttpsプロトコルをサポートしています。

または、プロジェクトを別の場所に配置して、 Linuxサーバー 以下のコマンドに従ってください-
cd $ HOME
mkdir remote_repo
cd remote_repo
git init--bare。

Javaでシリアル化されるもの

リモコンをローカルマシンに接続します

作業コピーにリモコンを接続するということは、単に ポインター参照ハンドラー リモコン用または単に「 リモートハンドラー '。
公開したいプロジェクトにジャンプしましょう-cd learnRemotes
構文:git remote add
コマンド:git remote add origin https://github.com/divyabhushan/learnRemotes.git

'原点 それは デフォルト リモートハンドラーの参照名。」 (リモート名は関連する名前である必要があります)
次のコマンドを使用して、それが機能するかどうかを確認しましょう。gitリモート

しました:)

名前と一緒にリモートURLも印刷します。
git remote -v

よくやった!これで、ローカルの作業ディレクトリからリモートリポジトリへの接続を確立する準備が整いました。

公開する時間

構文:git push --all --tags[-u | --set-upstream]
コマンド:git push origin master

だから、あなたはこれを次のように読みます 「ローカルマスターからのオリジンへのコミットの差分をプッシュする」

GitHubアカウントを確認する場合は、ローカルのコミット(データ)をそこに表示する必要があります-



ブランチの追跡

これで、リモートリポジトリに作業を正常に公開できました。
ただし、ローカルブランチを次のように設定することが重要です。 追跡 リモートブランチの変更は自動的に行われます。
使用 '--set-upstreamまたは-u‘フラグと‘ git push ’コマンド
コマンド:git push-uオリジンマスター

色分けされた枝


さらに「master」ブランチに新しいコミットを作成し、gitがそれをどのように検出するかを確認しましょう-
コマンド:gitステータス


詳細モードで追跡ブランチを表示する
コマンド:gitブランチ-vv


したがって、追跡されたブランチのローカルリポジトリとリモートリポジトリの間でコミットに違いがあるたびに、Gitが通知します。
かっこいいじゃないですか!!!

他の人はどのようにあなたのリモコンに接続しますか?

あなたがするとき、それはケーキです クローン リモートリポジトリ!!!

したがって、リモートリポジトリからのクローン作成では、最初に2つのことが行われます。 リモートリファレンス 自動的に追加され、2番目のデフォルト ブランチ に設定されています 追跡 リモートブランチ 自動的に。

ステップ1: リモートリポジトリを別のユーザーとして複製します-
コマンド:git clone https://github.com/divyabhushan/learnRemotes.gitdeveloper2
cddeveloper2

ステップ2: リモコンとそのURLを表示する
コマンド:git remote -v


ステップ3: 追跡ブランチを一覧表示します
コマンド:gitブランチ-vv


楽しみは、「developer2」が自分の作業を開始してリモートにプッシュするときに始まります。

あなたはつながり、貢献することができます 複数のリモコン からのリポジトリ 単一のプロジェクト

リモートブランチを表示する

コマンド:gitブランチ-r


「-a」オプションを使用して、ローカルブランチとリモートブランチの両方を印刷します。いくつかのローカルブランチを作成した後、ローカルリポジトリで試してください。

他の人があなたのリモコンにどのように貢献していますか?

初期設定
Developer2は、次のようないくつかの変更を行うことにしました。
に。 作成する 「master」ブランチの最新のコミットからの新しい「機能」を作成し、 新しいコミット 「機能」ブランチ
コマンド:
git checkout-b機能
echo '機能拡張'> feature.txt
gitadd。 && git commit -m '機能拡張'

b。 作成する 「master」ブランチの古いコミットとは異なる「feature2」ブランチ
コマンド:
git checkout -b feature2 95651fb
echo'feature2が追加されました '> feature2.txt
gitadd。 && git commit -m'feature2の変更を追加する '

追跡情報とともに、developer2マシンのブランチを視覚化してみましょう。

お気づきのとおり、新しいブランチはリモートブランチを追跡するように設定されていません。

変更をリモートにプッシュする
まず、「– set-upstreamor-u」フラグを使用して「feature」ブランチをリモートにプッシュします
コマンド:git push-uオリジン機能




まだ存在しない場合は、リモートに新しいブランチが作成されます!!!

この時点で、コマンド「gitbranch-r」を使用してリモートブランチを一覧表示します。




リモートブランチを追跡する別の方法
さらに、リモートの同じ「機能」ブランチを指すように「機能2」ブランチも設定しましょう
コマンド:git branch --set-upstream-to = origin / feature feature2



色分けされたブランチ


簡単なヒント:ローカルブランチに既に参加している場合、つまりローカルブランチが既にチェックアウトされている場合は、ローカルブランチ名を省略できます。

ブランチを冗長モードでもう一度リストします。コマンド:gitブランチ-vv



ローカルブランチの「feature」と「feature2」の両方が同じリモートブランチの「feature」を指していることに注意してください。

リモートとの同期を維持–フェッチ、プル、プッシュ

の部分を考えてみましょう リモートブランチ あなたが追跡しているのはすでに更新されています、それではどうしますか?
シンプルな 'gitステータス‘または‘git checkout‘または‘gitブランチ-vv‘コマンドはそのような不一致で私たちに警告します-



「開発者2」は、最初にローカル参照とオブジェクトを更新する必要があります(「 git fetch ‘)次に、リモートとローカルの変更をマージします(‘ git merge ’)。
興味深いことに、これら2つのコマンドを1つの「gitpull」コマンドに置き換えることができます。
構文:行く 引く

–追跡されていないブランチの場合
構文:git pull [:]
コマンド:git pull origin feature:feature2

–追跡されたブランチの場合
構文:git pull
コマンド:git pull




=>実際には、簡単にするためにリモートからプルすると、この段階で競合が発生する可能性があります。競合のないコミット変更を生成しました。

「developer2」プル(フェッチとマージ)の後、リモートの最新の変更は自分の作品を公開する必要があります-
コマンド:git push origin HEAD:feature
注:アップストリームブランチの「feature」はローカルブランチの「feature2」の名前と一致しないため、明示的に指定する必要があります



リマインダー :「HEAD」は、ローカルの「feature2」ブランチでの最新のコミットです。

「gitfetch」を使用するのはいつですか?
更新する必要がある場合 参照ヘッド リモートから実際にダウンロード(プル)することなく。
または、更新時にリモートブランチが変更/削除された場合は、「」を指定してフェッチコマンドを実行する必要があります。 - プルーン‘オプション。
ベストプラクティスとして、ローカルリポジトリでの作業を開始するたびに「gitfetch」コマンドを実行する必要があります。

リモート管理

最後に、リモコンやブランチの名前の変更や削除など、いくつかのハウスキーピングタスクを実行する必要があります。
これらは、前のコマンドと同じくらい重要です。

リモートの名前を変更する

構文:git remote rename
コマンド:git remote rename snv_repo svn
たとえば、3つのプロジェクトに関連付けられているプロジェクトマネージャーについて考えてみます。


リモート参照を削除する

リモートリポジトリと同期しなくなったとすると、そのリポジトリへのポインタ参照が削除される可能性があります。
ただし、これはリモートリポジトリや他の作業に影響を与えることはありません。

構文:git remote remove
コマンド:git remote remove proj1


削除された「proj1」リポジトリからブランチを追跡するようにローカルブランチを設定した場合はどうなりますか?
さて、あなたの ローカルブランチ (したがって、作業)は 安全 そしてまだ存在している、ただその リモートトラッキングリファレンス そして 構成 設定は 自動削除

リモートブランチを削除する

あなたが言います 誤って あなたを押した 個人 ラフワーク リモートに分岐する しかし、他の人にまだチェックしてほしくない–
リモートの「svn」から「unfinishedWork」ブランチを削除します-
コマンド:gitブランチ-vv#リモートトラッキングブランチを一覧表示する



構文:git push --delete
コマンド:git push --delete svn unfinishedWork


終わらせている

ansible vs chef vs puppet

これで、この記事は終わりです。 これを見つけたら「 チュートリアル 」関連、 チェックアウト 25万人以上の満足した学習者のネットワークを持つ信頼できるオンライン学習会社であるEdurekaが世界中に広がっています。 Edureka DevOps認定トレーニングコースは、学習者がSDLCの複数のステップを自動化するためのPuppet、Jenkins、Nagios、GITなどのさまざまなDevOpsプロセスとツールに関する専門知識を習得するのに役立ちます。