11.1 Gitのブランチ
Gitのブランチ (branches) 作業 は、バージョン管理の重要な要素で あり、1つのリポジトリ内で同時に複数の開発ラインを持つことができます。 ブランチ機能は、Gitをコラボレーションや実験、プロジェクトの異なるバージョン管理に 強力なツールにしています。
Gitのブランチはフォルダのように考えることができます。Gitはプロジェクトをコピーしてくれます。 あなたのプロジェクトのメインフォルダは あなたの ローカルリポジトリ で、master です。 Gitはこのフォルダのコピーを作成し、実験ができるようにし、元のコードを傷つけるリスクを避けます。 これらのフォルダのコピーは ブランチ — branches と呼ばれます。
ブランチはコードの代替バージョンです。 大きなプロジェクトで何かを変更したり、実験をしたりしたい場合、 Gitなしではどうするでしょうか?
プロジェクトを新しいフォルダにコピーし、そこで変更を試すことができます。 結果が気に入ったら、メインフォルダにコピーします。気に入らなければ忘れるか、 削除してしまいます。
本を執筆する例で説明してみましょう:
- あなたには書籍の原稿があります(メインブランチ)。
- 結末を変えてみたいと思います(新しいブランチの作成)。
- 新しい結末を別のドキュメントに書きます(新しいブランチでの作業)。
- 新しい結末が良ければ、原稿の古い結末を置き換えます(ブランチのマージ)。
- 新しい結末のドキュメントを削除します(ブランチの削除)。
11.2 ブランチの作成
PyCharmでブランチを作成するのはとても簡単です。
ブランチ名を入力します。
PyCharmはすぐに現在のブランチ名をメニューの上部に表示します:
これまでの表示はどうでしたか?
以前は最初のメインブランチ — master の名前が表示されていました。
現在は test となっており、Git(PyCharmによって) 新しいブランチを作成し、すぐにそれに切り替えられたことを意味します。
現在のブランチ (test) のファイル main.py にコードを追加してコミットしましょう。
11.3 ブランチの切り替え
ステップ1. ブランチを選択します
それでは、古いブランチに切り替えてみましょう。上のメニューをクリックすると、何が見えますか?
混乱しないでください — とても簡単です:
Local — これはローカルgitリポジトリの ブランチのリストです;ここには2つあります:
testmaster
Remote — これはGitHubのサーバー上にある あなたのリモートリポジトリです。ここに変更を送信しましたが、新しい ブランチはありません──それは理にかなっています。リモートリポジトリの名前は originで、そこにはmasterブランチだけがあります。
Recent — これは、最近作業したブランチの 名前のリストです。PyCharmが便利で高速なために追加したものです。
ローカルリポジトリ名の右にあるorigin/masterは、 現在同期されているリモートリポジトリの名前で、そこに変更が送信されます。
ステップ2. — ブランチコードを現在のフォルダにダウンロードします
ステップ3. チェックします:
私のところではブランチ (master) と古いコードが表示されています。
11.4 ブランチのマージ
ブランチのコードをマージしてみましょう。
ステップ1. まず、プロジェクトにファイルを1つ追加して、その中にコードを書きます。
- ファイル init.py を作成
- そこにコード print("こんにちは") と書く
- ファイルをコミット
これが master ブランチの中の2つのファイルの見た目です:
ステップ2. ブランチをマージする
現在のブランチ (master) に test ブランチで行った変更をマージします。
これには上部のメニューと「Merge ‘test’ into ‘master’」 コマンドを使用します。
ステップ3. 結果を確認します:
確認します:
- 上部にはまだ
masterブランチが表示されています - 2つのファイルがあります:init.py と main.py
- main.py ファイルには
testブランチで追加されたコードが含まれています。
11.5 マージコンフリクト
ブランチのマージ時にコンフリクトが発生することがあります。
異なるブランチで1つのファイルに変更を加えた場合、 それらをマージする際にコンフリクトが発生することがあります。
テキストファイルのコンフリクト
Gitは非常に賢いシステムで、ファイルの種類を認識します。 テキストファイルと認識したファイルの異なる場所に変更を加えた場合、 Gitは1つのファイルから別のファイルに変更を適切な位置に移動します。
バイナリファイルのコンフリクト
しかし、画像やドキュメントに変更を加えた場合、 Gitはそれらの部分をマージしようとはしません。代わりに、 現在のブランチに残すバージョンを選択することを提案します。
手動でのコンフリクト解決:
テキストファイルの同じ場所に変更を加えた場合、 Gitは異なるバージョンを正しく統合することができず、 あなたにそれを行うように提案します。
これがその見た目です:
ここで見ているもの:
- 左側に
masterブランチの main.py ファイルの内容 - 右側に
testブランチの main.py ファイルの内容 - 中央でPyCharmが最終的なバージョンを書くよう提案しています (
「>>」や「<<」ボタンをクリックして、 自動的に1つのファイルから変更を挿入することができます)。
私は master バージョンを採用し、コードを手動で追加しました。 これが私の結果です。
11.6 変更履歴
他にも役立つ情報として、ファイルの変更履歴をShow Historyボタンをクリックすることで確認できます。 それがどこにあるのか見つけてください。
これが私の main.py ファイルの変更履歴の見た目です:
説明:
- 左側に特定のファイルの変更履歴があります:
- 新しい変更ほど上にあり、古い変更ほど下にあります。
- ここにもブランチのマージ履歴が表示されています。
- 右側には特定のコミットで加えられた変更があります。
GO TO FULL VERSION