必要な導入メモ:
- git に関する記事を読んで繰り返し、理解してください。これにより、すべてがすでにセットアップされ、すぐに使用できるようになります。
- Intellij IDEA をインストールします。
- 完全に吸収するために 1 時間の個人的な時間を確保してください。
プロジェクトのクローンをローカルに作成する
ここには 2 つのオプションがあります。- すでに Github アカウントをお持ちで、後で何かをプッシュしたい場合は、プロジェクトを自分にフォークしてコピーを複製することをお勧めします。フォークの作成方法 - この記事の章のフォーク ワークフローの例について説明しました。
- リポジトリからクローンを作成し、すべてをサーバーにプッシュすることなく、すべてをローカルで実行します。結局のところ、これは私のリポジトリになります))
-
プロジェクトのアドレスをコピーします。
-
Intellij IDEA を開き、バージョン管理から取得を選択します。
-
アドレスをコピーしてプロジェクトに貼り付けます。
-
Intellij IDEA プロジェクトを作成するように求められます。私たちはその申し出を受け入れます:
-
ビルド システムはなく、これは記事の範囲ではないため、 [既存のソースからプロジェクトを作成]を選択します。
-
次に、次のような油絵が表示されます。 クローン作成を整理しました。今は周りを見てみましょう。
Git UI としての Intellij IDEA を初めて見てみる
クローン化されたプロジェクトをもう一度よく見てください。すでにそこには、バージョン管理システムに関する多くの情報が得られます。1 つ目は、左下隅にあるバージョン コントロールパネルです。その中で、すべてのローカル変更を検索し、コミットのリストを取得できます (git log に似ています)。ログの講義に移りましょう。開発プロセスがどのように進んだかを正確に理解するのに役立つ特定の視覚的なコンポーネントがあります。たとえば、txt にヘッダーを追加したcommit を含む新しいブランチが作成され、それが master ブランチにマージされたことがわかります。コミットをクリックすると、右隅にコミットに関するすべての情報、つまりすべての変更とそのメタデータが表示されます。 さらに、どのような変更が加えられたかを確認できます。さらに、そこで紛争は解決されました。IDEA もこれを完璧に示しています。このコミット中に変更されたファイルをダブルクリックすると、競合がどのように解決されたかがわかります。 右側と左側に、1 つにマージする必要がある同じファイルの 2 つのバージョンがあることがわかります。そして真ん中が最終結果です。プロジェクトに多くのブランチ、コミット、およびプロジェクトで作業するユーザーがある場合、ブランチ (ブランチ)、ユーザー (ユーザー)、および日付 (日付) で個別に検索する必要があります。そして、 開始する前に最後に説明したいのは、どのように理解するかです。私たちがどの支店にいるのか。ちょっと探してみましょう...見つかりましたか? 諦めていますか?:D 右下隅にはボタンGit: masterがあり、Git: の後にはプロジェクトが現在どのブランチにあるかが表示されます。ボタンをクリックすると、別のブランチへの移動、新しいブランチの作成、既存のブランチの名前変更など、さまざまな便利な操作を行うことができます。リポジトリの操作
便利なホットキー
作業を続けるには、非常に便利なホットキーをいくつか覚えておく必要があります。- ctrl + t - リモート リポジトリから最新の変更を取得します (git pull)。
- Ctrl + K - 現在利用可能なすべての変更をコミット/表示します。これには、追跡されていないファイルと変更されたファイルの両方が含まれます (git に関する私の記事を参照してください。これについてはそこで説明されています) (git commit)。
- Ctrl + SHIFT + K は、変更をリモート リポジトリにプッシュするためのコマンドです。ローカルで作成され、リモートにまだ存在していないすべてのコミットは、プッシュ (git Push) に提供されます。
- alt + ctrl + z - 特定のファイル内の変更を、ローカル リポジトリ内で最後に作成されたコミットの状態にロールバックします。左上隅でプロジェクト全体を選択すると、すべてのファイルへの変更をロールバックできます。
私達は何が欲しいのか?
作業するには、どこでも使用される基本的なスクリプトをマスターする必要があります。タスクは、新しい機能を別のブランチに実装し、リモート リポジトリにプッシュすることです (その後、メイン ブランチに対して別のプル リクエストを作成する必要がありますが、これは記事の範囲を超えています)。何をする必要がありますか?-
現在メイン ブランチ (master など) にあるすべての変更を取得します。
-
このメインのものに基づいて、作業用に別のものを作成します。
-
新しい機能を実装します。
-
メイン ブランチに移動し、作業中に新しい変更があったかどうかを確認します。そうでない場合は、すべてが正常です。正常だった場合は、次の操作を実行します。作業ブランチに移動し、変更をメイン ブランチから私たちのブランチにリベースします。すべてがうまくいけば、素晴らしいことです。しかし、衝突が起こる可能性も十分にあります。また、リモート リポジトリで時間を無駄にすることなく、事前に解決できます。
なぜこんなことをするのでしょう?これは良い形式のルールであり、ブランチをローカル リポジトリにプッシュした後に競合が発生するのを防ぎます (もちろん、競合がまだ存在する可能性はありますが、競合は大幅に小さくなります)。
- 変更をリモート リポジトリにプッシュします。
リモートサーバーから変更を受け取りますか?
新しいコミットで README に説明を追加し、これらの変更を受け取りたいと考えています。ローカル リポジトリとリモート リポジトリの両方で変更が行われた場合、マージとリベースのどちらかを選択できます。結合を選択します。Ctrl + tを入力します。 その結果、README がどのように変更されたかを確認できます。リモート リポジトリからの変更が取得され、右下隅にサーバーからの変更の詳細がすべて表示されます。マスターに基づいて新しいブランチを作成します
ここではすべてがシンプルです。-
右下隅に移動して[Git: master]をクリックし、[+ New Branch]を選択します。
[チェックアウト ブランチ]チェックボックスをそのままにして、新しいブランチの名前を入力します。私の場合はreadme-improverになります。
この後、Git: master はGit: readme-improverに変更されます。
並列作業のシミュレーション
競合が発生するには、誰かが競合を作成する必要があります :D ブラウザを介して新しいコミットで README を編集し、並列作業をシミュレートします。私の作業中に誰かが私と同じファイルに変更を加えたため、競合が発生すると言われています。10行目から「完全に」という言葉を削除させていただきます。機能を実装する
タスクは、README を変更し、新しい記事に説明を追加することです。つまり、git での作業は Intellij IDEA を通じて行われます。これを追加します: 変更が完了したので、コミットを作成できるようになりました。ホットキーctrl + kを押すと、次の結果が得られます。 コミットを作成する前に、このウィンドウで提供される内容を注意深く確認する必要があります。どこを見るべきかを示すために、特に矢印を追加しました。そこには興味深いものがたくさんあります。「コミットメッセージ」セクションにコミットのテキストを記述します。コミットを作成するには、「コミット」ボタンをクリックする必要があります。ホットキーでこれを行う方法がまだ見つかっていないので、誰かがそれを見つけたら、書いてください。とてもうれしいです。README が変更されたことを記述し、コミットを作成します。その結果、左下隅にコミット名を含むアラートがポップアップ表示されます。master ブランチが変更されたかどうかを確認する
タスクは完了し、動作し、テストも作成しました。すべて問題ありません。ただし、サーバーにプッシュする前に、この間にメイン ブランチに変更があったかどうかを確認する必要があります。どうしてこんなことが起こるのでしょうか?それは非常に単純です。あなたの後に誰かにタスクが与えられ、そのタスクをあなたよりも早く実行したのです。したがって、master ブランチに移動します。これを行うには、次の図に示すように、右下隅で行う必要があります。 master ブランチで、ctrl + tを押して、リモート サーバーから最新の変更を取得します。どのような変更が加えられたかを見ると、何が起こったのか簡単にわかります。 ご覧のとおり、「完全に」という言葉が削除されています。おそらく、マーケティング部門の誰かがそのようには書けないと判断し、開発者に更新のタスクを与えたのでしょう。これで、最新バージョンの master ブランチがローカルに存在しました。readme-improverに戻りましょう。ここで、変更を master ブランチから私たちのブランチにリベースする必要があります。私たちはそうします: あなたが私の指示に従ってすべてを正しく実行した場合、結果は README ファイルに矛盾が生じるはずです。 ここには理解して吸収する必要のある情報もたくさんあります。これは、競合しているファイルのリスト (この例では 1 つの要素) を表示します。次の 3 つのオプションを選択できます。- あなたのものを受け入れます - readme-improver からの変更のみを受け入れます。
- 彼らのものを受け入れる - マスターからの変更のみを受け入れます。
- マージ - 何を保持し、何を削除するかを自分で選択します。
- これらは readme-improver からの変更です。
- 結果。今のところ変更前と同じです。
- master ブランチからの変更。
変更をリモートサーバーにプッシュする
次のステップでは、変更をリモート サーバーにプッシュし、プル リクエストを作成します。これを行うには、Ctrl + SHIFT + Kを押すだけです。その後、次の結果が表示されます。 左側にはリモート リポジトリにプッシュされていないコミットのリストが表示され、右側にはリモート リポジトリにプッシュされたすべてのファイルが表示されます。かわった。これですべてです: [プッシュ]をクリックすると満足です :) プッシュが成功すると、右下隅に次のような通知が表示されます。ボーナスパート
当初はプル リクエストの作成を記事に追加するつもりはありませんでしたが、そのせいで完全ではないことがわかりました。したがって、GitHub リポジトリ (もちろんあなたのものである場合)))) にアクセスし、GitHub が何を提供するかをすでに知っていることを確認します。 [ Compare & pull request]をクリックし、[Create pull request]をクリックします。事前に競合を解決したことにより、プル リクエストを作成するときにすぐにマージできるようになりました。 今回伝えたかったのはこれだけです。もちろん、ドアを開けてほんの一部をお見せしただけです。残りは必要に応じて自分で見つけます。いつものように、私が仕事で使用しているさまざまなテクノロジーに基づいたプロジェクトを投稿している私のGitHub アカウントに登録することをお勧めします。私は最近、個人的な成果を達成しました。私のプロジェクトはすでに 100 人以上の開発者によって評価されています。自分の作ったものが誰かに使われると、この上ない喜びを感じます。そしてそれを良いために使います。役立つリンク
- JavaRush: Git 入門: 初心者向けの詳細ガイド
- GitHub:使用するデモ プロジェクト
- JavaRush: Git での分岐戦略の分析
- JetBrains: Git リポジトリのセットアップ
- Habr: Git リベース
- GitHub:私のアカウント
GO TO FULL VERSION