必須入力:
- Git に関する私の記事を読み、フォローして、理解してください。これにより、すべてがセットアップされ、すぐに使用できるようになります。
- IntelliJ IDEA をインストールします。
- 完全にマスターするために、1 時間の個人的な時間を割り当ててください。
プロジェクトのクローンをローカルに作成する
ここには 2 つのオプションがあります。- すでに GitHub アカウントをお持ちで、後で何かをプッシュしたい場合は、プロジェクトをフォークして独自のコピーを複製することをお勧めします。
- リポジトリのクローンを作成し、すべてをサーバーにプッシュすることなく、すべてをローカルで実行します。結局のところ、これは私のリポジトリです:)
-
プロジェクトのアドレスをコピーします。
-
IntelliJ IDEA を開き、「バージョン管理から取得」を選択します。
-
プロジェクトのアドレスをコピーして貼り付けます。
-
IntelliJ IDEA プロジェクトを作成するように求められます。オファーを受け入れます:
-
ビルド システムはなく、この記事の範囲を超えているため、 [既存のソースからプロジェクトを作成]を選択します。
-
次に、この美しい画面が表示されます。クローン作成について理解したので、周りを見てみましょう。
Git UI としての IntelliJ IDEA の概要
クローンされたプロジェクトを詳しく見てみましょう。バージョン管理システムに関する多くの情報がすでに得られています。まず、左下隅にバージョン管理ペインがあります。ここでは、すべてのローカル変更を検索し、コミットのリストを取得できます (「git log」に似ています)。Logの説明に移りましょう。開発がどのように進行したかを正確に理解するのに役立つ特定の視覚化があります。たとえば、 txt commit にヘッダーが追加された新しいブランチが作成され、それが master ブランチにマージされたことがわかります。コミットをクリックすると、右隅にコミットに関するすべての情報 (すべての変更とメタデータ) が表示されます。さらに、実際の変化も確認できます。また、そこで競合が解決されたこともわかります。IDEA もこれを非常によく示しています。このコミット中に変更されたファイルをダブルクリックすると、競合がどのように解決されたかがわかります。左側と右側に、1 つにマージする必要がある同じファイルの 2 つのバージョンがあることがわかります。そして真ん中には、最終的なマージ結果があります。プロジェクトに多くのブランチ、コミット、ユーザーがある場合は、ブランチ、ユーザー、日付ごとに個別に検索する必要があります。始める前に最後に説明したいのは、どのブランチにいるのかを理解する方法です。ちょっと待ってください...見つけられましたか? あきらめる?:D 右下隅に、「Git: マスター」というラベルのボタンがあります。。「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」をクリックします。[+ 新しいブランチ]を選択します。
[チェックアウト ブランチ]チェックボックスを選択したままにし、新しいブランチの名前を入力します。私の場合は、 readme-improverになります。
Git: master はGit: readme-improverに変更されます。
並行作業をシミュレーションしてみよう
競合が発生するには、誰かが競合を作成する必要があります:D ブラウザーを介して新しいコミットで README を編集し、並行作業をシミュレートします。私が作業している間に誰かが同じファイルに変更を加えたかのようです。その結果、衝突が起こることになります。10行目から「fully」という単語を削除します。機能を実装する
私たちのタスクは、README を変更し、新しい記事に説明を追加することです。つまり、Git での作業は IntelliJ IDEA を経由します。これを追加します:変更は完了しました。これでコミットを作成できるようになりました。CTRL+Kを押すと、次のようになります。コミットを作成する前に、このウィンドウが提供するものを詳しく見る必要があります。どこを見るべきかを示すために赤い矢印を追加しました。ここには興味深いものがたくさんあります。「コミットメッセージ」セクションでは、コミットに関連付けられたテキストを記述します。次に、それを作成するには、 「コミット」をクリックする必要があります。ホットキーでこれを行う方法がまだわかりません。誰かがその方法を見つけたら、私に手紙を書いてください。それは私にとってとても嬉しいことです。README が変更されたことを記述し、コミットを作成します。左下隅にコミット名を示すアラートがポップアップ表示されます。main ブランチが変更されたかどうかを確認する
私たちは任務を完了しました。できます。私たちはテストを書きました。すべて順調。ただし、サーバーにプッシュする前に、その間にメイン ブランチに変更があったかどうかを確認する必要があります。どうしてそんなことが起こるのでしょうか?非常に簡単に、誰かがあなたの後にタスクを受け取り、その誰かがあなたのタスクを完了するよりも早くタスクを完了します。したがって、master ブランチに移動する必要があります。これを行うには、以下のスクリーンショットの右下隅に示されている操作を行う必要があります。masterブランチで、CTRL+Tを押して、リモート サーバーから最新の変更を取得します。変更内容を見ると、何が起こったのかが簡単にわかります。「fully」という単語が削除されました。おそらくマーケティング部門の誰かがそのように書くべきではないと判断し、開発者にそれを更新するタスクを与えたのでしょう。これで、master ブランチの最新バージョンのローカル コピーが作成されました。readme-improverに戻ります。ここで、変更を master ブランチから私たちのブランチにリベースする必要があります。私たちはこれを行います:すべてを正しく実行し、私に従っていた場合、結果は README ファイルに矛盾を示すはずです:ここには、理解して吸収する必要のある情報もたくさんあります。ここに示されているのは、競合しているファイル (この例では 1 つのファイル) のリストです。次の 3 つのオプションから選択できます。- あなたのものを受け入れる — readme-improver からの変更のみを受け入れます。
- 彼らのものを受け入れる — マスターからの変更のみを受け入れます。
- マージ — 何を残し、何を破棄するかを自分で選択します。
- これらは readme-improver からの変更点です。
- 結合した結果。現時点では、これは変更前に存在していたものです。
- master ブランチからの変更。
変更をリモートサーバーにプッシュする
次のステップでは、変更をリモート サーバーにプッシュし、プル リクエストを作成します。これを行うには、CTRL+SHIFT+Kを押すだけです。左側には、リモート リポジトリにプッシュされていないコミットのリストが表示されます。右側には、変更されたすべてのファイルが表示されます。以上です!Pushを押すと幸せを感じるでしょう :) プッシュが成功すると、右下隅に次のような通知が表示されます。ボーナスパート
当初、この記事にプル リクエストの作成を追加するつもりはありませんでしたが、これなしでは完全とは言えません。それでは、GitHub リポジトリ (もちろんあなたのものです :)) に行きましょう。すると、GitHub が私たちが何を望んでいるのかをすでに知っていることがわかります。 [比較とプル リクエスト]をクリックします。次に、「プルリクエストの作成」をクリックします。事前に競合を解決したので、プル リクエストを作成するときにすぐにマージできるようになりました。今回言いたかったのはこれだけです。もちろん、私はあなたのためにドアを少し開けて、ほんの一部をお見せしただけです。残りの部分については、必要に応じて学習します。GitHub でフォローするよう招待する習慣があります, ここでは、仕事で使用するさまざまなテクノロジーを含むプロジェクトを投稿しています。私は最近、個人的な成果を上げました。私のプロジェクトの 1 つが100 人以上の開発者から星を獲得しました。自分のやったことが他の人に使われているとわかると、とてつもない喜びを感じます。そしてそれを大切に使ってください。役立つリンク
- CodeGym: Git 入門: 初心者向けの包括的なガイド
- GitHub:練習用のデモプロジェクト
- JetBrains: Git リポジトリのセットアップ
- GitHub:私のアカウント
GO TO FULL VERSION