導入
この記事は「Gitの使い方」シリーズの第3弾です。インストールに関する記事とGitの効果的な使い方に関する記事の両方を読んでいることを前提としています。.
バージョン管理システムの世界において、GITは柔軟性の点で間違いなく最高峰の一つです。構文を習得し、Gitがワークフローや環境にどのように最適に機能するかを理解するのは非常に簡単です。.
このチュートリアルでは、2 つのブランチ (マスターと開発) を作成する方法と、開発から本番にコードをマージする方法について説明します。.
ブランチとは、本質的に、固有の名前を持つ一連のコード変更のことです。各リポジトリには、1つ以上のブランチを設定できます。.
デフォルトでは、最初のブランチは「master」と呼ばれます。.
ブランチを表示
新しいブランチを作成する前に、既存のブランチをすべて確認しておきましょう。次のコマンドを入力すると、既存のブランチをすべて確認できます。
git branch -a
コマンドの末尾に「-a」を追加すると、ローカルワークスペースにないものも含め、利用可能なすべてのブランチを表示するように GIT に指示します。.
出力は次のようになります。
* master remotes/origin/master
出力の最初の行にある「master」の横のアスタリスクは、現在そのブランチにいることを示しています。2行目は、リモートに origin という名前のブランチ(master とも呼ばれます)が1つあることを示しています。.
ブランチの表示方法がわかったので、最初のブランチを作成します。.
ブランチの作成
この記事の冒頭で述べたように、コーディング環境には開発と本番のセットアップが必要です。.
デフォルトのブランチ「master」を本番環境として扱いたいので、開発用またはプレ本番環境用の単一のブランチを作成する必要があります。.
「develop」という新しいブランチを作成するには、次のように入力します。
git checkout -b develop
「development」というブランチがまだ存在しないと仮定すると、出力は次のようになります。
Switched to a new branch 'develop'
その名前のブランチがすでに存在する場合、GIT は次のように通知します。
fatal: A branch named 'develop' already exists.
git checkout コマンドを使用して、2 つのブランチ間を行き来することができます。
git checkout master
または
git checkout develop
切り替え先のブランチがあると仮定すると、次のような出力が表示されます。
Switched to branch 'master'
存在しないブランチに切り替えようとすると、例えば
git checkout nosuchbranch
Git は次のように伝えます:
error: pathspec 'nosuchbranch' did not match any file(s) known to git.
複数のブランチができたので、それらを有効活用する必要があります。今回のシナリオでは、「development」ブランチで変更をテストし、masterブランチで公開リリースを行います。.
このプロセスを説明するには、開発ブランチに戻る必要があります。
git checkout develop
開発ブランチに変更を加える
このブランチに、「develop」という新しい空のファイルを作成します。このファイルは、次のステップでメインブランチにマージするまで存在しません。.
touch develop
前のチュートリアルと同様に、この新しいファイルを追跡したいことを git に伝える必要があります。.
次のように入力して「develop」ファイルを追加できます。
git add develop
上記のコマンドセットは、「develop」という空のファイルを作成し、それを GIT に追加します。.
また、このファイルをコミットする必要があり、これにより、このファイルが現在いるブランチ (「開発」) に追加されます。.
git commit -m "develop file" develop
このファイルは現在、開発ブランチに存在します。これから確認しますが、マスターブランチには存在しません。.
まず、現在開発ブランチにいることを確認します。確認するには、次のように入力します。
git branch
出力は次の図のようになるはずです。
* develop master
ブランチ名の横にある星は、現在そのブランチにいることを示すことはすでに理解しました。.
「ls」コマンドを実行すると、次の 2 つのファイルが存在することがわかります。
ls出力を見ると、両方のファイルがそれぞれ「file」と「develop」という名前で見つかったことがわかります。
develop file
ブランチ間でコードをマージする
興味深い部分は、git checkout コマンドを使用して元のブランチに戻った後に発生します。
git checkout master
メイン ブランチにいることを確認するには、次のように入力します。
git branch
出力には、アスタリスクで示されるように、どのブランチにいるかが示されます。.
develop * master
もう一度「ls」を実行すると、新しいファイルが見つからないようです。.
file失われてはいません。開発ブランチにあり、メイン ブランチにいます。.
このシナリオでは、このファイルは開発ブランチですべてのテストに合格し、本番環境への展開準備が整ったファイル(または完全に新しいファイル)への変更を表します。ブランチ間でコードを移動するプロセス(多くの場合、開発ブランチから本番ブランチへ)は、マージと呼ばれます。.
マージするときには、マージ先のブランチにいる必要があることを覚えておくことが重要です。.
この場合、「develop」ファイルが存在する開発ブランチからマスターブランチにマージします。.
これを念頭に置いて、現在はマスター ブランチにいるのであれば、マージ コマンドを実行するだけで済みます。.
マージコマンドに渡せるオプションの一つ、「–no-ff」は、マージ前のコミットメッセージをすべて保持することを意味します。これにより、将来の変更を追跡しやすくなります。.
開発ブランチからの変更をマスター ブランチにマージするには、次のように入力します。
git merge develop --no-ff
コマンドの出力は次のようになります。
Merge made by the 'recursive' strategy. 0 files changed create mode 100644 develop
もう一度 ls コマンドを実行すると、「develop」ファイルがメイン ブランチにあることが確認できます。.
develop file
この変更をリモート サーバーに適用するために最後に必要なのは、変更をプッシュすることです。これは、git push コマンドを使用して実行できます。.
git push
次のような出力が表示され、開発ブランチからリモート サーバーのマスター ブランチにマージされたことが確認されます。
Counting objects: 4, done. Delta compression using up to 2 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 332 bytes, done. Total 3 (delta 1), reused 0 (delta 0) To ssh://[email protected]/repository 9af2dcb..53649cf master -> master
結果
上記のチュートリアルに従うことで、2つのブランチを使ったワークフローを構築でき、GITにおけるブランチの仕組みをしっかりと理解できるはずです。ぜひコメント欄でご意見をお聞かせください!









