CI/CDをkatacodaで体験(初心者向け) - Part6(Experiments Using Branches)


CI/CD入門

このぺーじでは、katacodaと呼ばれる「ブラウザから無料で勉強用のインスタンスを起動できるWebサービス」を利用してCI/CDを実践します
内容は上記リンクに沿うので、不明点があればそちらへどうぞ

Gitのバージョン管理について - Scenario6 - Experiments Using Branches

ここでは、CI/CDとして欠かせないGitによるバージョン管理について学習します
このシナリオで学習することをさっと確認する場合は概要を確認
理解に間違い等がございましたら、ぜひご指摘ください

概要

  • branchの作成は、git branch <new branch> <original branch>や、git checkout -b <new branch>
  • branchの一覧表示は、git branch。オプションとして-vaは頻繁に利用
  • branchの統合は、マージ先branchでgit merge <branch>
  • branchの削除はgit branch -d/D

Step 1 - Git Branch

gitを用いた開発では、ローカルレポジトリにmaster branchがデフォルトで作成される
このbranch上で直接開発を行うのではなく、複製した別のbranchを使うことでmaster branchにはローカルレポジトリ上での行うべき作業が行われたキレイな状態を維持することが可能
master branchをもとに別のbranchを複製する方法はgit branch <new_branch> <master branch>で実現可能
branchの移動はgit checkout <to branch>で実行

$ git branch -va
* ESC[32mmasterESC[m abe4241 First Commit on master
$ git branch new_branch master
$ git branch -va
* ESC[32mmaster    ESC[m abe4241 First Commit on master
  new_branchESC[m abe4241 First Commit on master
$ git checkout new_branch
Switched to branch 'new_branch'
$ git branch -va
  master    ESC[m abe4241 First Commit on master
* ESC[32mnew_branchESC[m abe4241 First Commit on master

また、git branch -b <new_branch>で同様にbranchを作成し、branchの移動(git checkout <new_branch>)も一度に行うことができる

$ git checkout -b test_branch
Switched to a new branch 'test_branch'
$ git branch -va
  master     ESC[m abe4241 First Commit on master
  new_branch ESC[m c112293 Commit on branch
* ESC[32mtest_branchESC[m abe4241 First Commit on master

Step2 - List Branches

branchの一覧を確認する際はgit branchで実現
以下のオプションはよく利用される

-a:remote branchも表示。remotes/origin/master等
-v:各branchの最新のコミットメッセージも表示

*は現在いるbranchを示している

$ git branch -va
  master    ESC[m 93f6d42 First Commit on master
* ESC[32mnew_branchESC[m 66ce3bf Commit on branch
$ git branch
  masterESC[m
* ESC[32mnew_branchESC[m
$ git branch -v
  master    ESC[m 93f6d42 First Commit on master
* ESC[32mnew_branchESC[m 66ce3bf Commit on branch

Step 3 - Merge To Master

gitにおいて複製元は複製先の変更を自動的に反映されない
反映させるために、git mergeを用いる

$ ls -a
.  ..  .git  staging.txt
$ git branch -va
* ESC[32mmasterESC[m bade7a5 First Commit on master

~~~branch作成、ファイル追加~~~   //katacodaでは、step3に入った際に自動的にファイルが作成されている

$ ls -a
.  ..  .git  new-file-6.txt  staging.txt
$ git branch -va
  master    ESC[m bade7a5 First Commit on master
* ESC[32mnew_branchESC[m 7a52803 Fix for Bug #58
$ git checkout master
Switched to branch 'master'
$ git merge new_branch
Updating bade7a5..7a52803
Fast-forward
 new-file-6.txt | 1 +
 staging.txt    | 2 +-
 2 files changed, 2 insertions(+), 1 deletion(-)
 create mode 100644 new-file-6.txt
$ ls -a
.  ..  .git  new-file-6.txt  staging.txt

Step 4 - Push Branches

ローカルレポジトリでの変更が済んだら、リモートレポジトリに変更の反映を行う
ここでは、すでにPart3(katacodaにおけるScenario 3 - Working Remotely)で経験済みなので省略
ちなみに、git pushを初めて実行したことで、git branch -vaの結果にremotes/origin/masterbranchが確認できるようになる

$ git branch -va
* ESC[32mmaster                   ESC[m 7a52803 Fix for Bug #58
  new_branch               ESC[m 7a52803 Fix for Bug #58
  ESC[31mremotes/origin/new_branchESC[m 7a52803 Fix for Bug #58

Step 5 - Clean Up Branches

最後に、必要なくなったbranchの削除方法はgit branch -d <branch>

$ git branch -va
* ESC[32mmaster                   ESC[m 7a52803 Fix for Bug #58
  new_branch               ESC[m 7a52803 Fix for Bug #58
  ESC[31mremotes/origin/new_branchESC[m 7a52803 Fix for Bug #58
$ git branch -d new_branch
Deleted branch new_branch (was 7a52803).
$ git branch -va
* ESC[32mmaster                   ESC[m 7a52803 Fix for Bug #58
  ESC[31mremotes/origin/new_branchESC[m 7a52803 Fix for Bug #58

マージされていないbranchを削除する場合はオプション-Dを利用