コンサルでデータサイエンティスト

仕事でPythonを書いてます。機械学習、Webマーケティングに興味があります。趣味は旅です。

GitLabでブランチを切ってMerge Requestを出す

GitLabを使ってチームで開発を進めている会社も多いかと思います。開発の仕事に関わっている方だと、「gitでdevelopからブランチ切ってMerge Request出しといて」なんて言われことがあるのではないでしょうか。慣れないうちは意味不明ですよね。本記事では、GitLab特有のMerge Requestの出し方について初心者でもわかるようにご説明します。

目次

「ブランチを切る」とは

ブランチを切るとは、ある特定のブランチから枝分かれさせる形でそのブランチのコピーを作ることを指します。重要なブランチで直接ファイルを書き換えられてしまったりすると、コードにミスがあったり、他の人がそのブランチでなにかしらの作業をしているときに支障が出てしまうためこのような操作を行います。そのため、1回メインブランチのコピーを作ってそこでファイルなどの変更を行い、それをもとのブランチに戻すという操作をします。この元のブランチに戻す操作をmergeと呼び、そのmergeを依頼することをmerge request といいます。

ブランチを切ってmerge request を出す

開発チームの管理者でない限りはgitに直接mergeする権限がないことも多いため、merge requestを出し、レビューなどをしてもらってからmergeをしてもらうというのがよくある運用方法だと思います。Merge RequestはGitLab特有の表現です。普段GitHubなどを使う方はPull Requestまたはプルリクと同じものであると考えればよいでしょう。今回は次の図のようなツリー構造を持つgitを考えます。

f:id:hktech:20180927232905p:plain

実際の開発環境では、メインのブランチであるmasterブランチと、masterに反映する手前に用意されているdevelopブランチがあることがほとんどです。これを前提に、ブランチを切ってからmerge requestを出すまでの流れについて説明します。

ローカルにレポジトリを初めて落としてくる場合

コマンドラインで、自分がリポジトリを配置したいディレクトリに移動して下記のコマンドを打っていきます。

まずgitレポジトリをローカルにクローンし、developブランチに移動します。

git clone http://repository_name.git
git checkout develop

ここで、developからブランチを切って新たな作業ブランチfix-api-bugを作成し、そのブランチに移動します。

git checkout -b fix_api_bug

または

git branch fix_api_bug
git checkout fix_api_bug


作業ブランチでファイルを色々書き換えたあとは、git add でインデックスに追加し、git commit でコミット、最後にリモートレポジトリ origin にpushします。

git add <各ファイル名> OR git add .  (編集した全てのファイル)
git commit  -m “fix api bug”
git push origin fix_api_bug

すでにローカルにレポジトリをクローン済の場合

まずはdevelopブランチに移動し、git pull することでリモートレポジトリとローカルレポジトリを同じ状態にします。

git checkout develop
git pull

残りの流れは、先ほどと同様にgit add, git commit を行い、最後にリモートレポジトリにpushします。

git checkout -b add_knn_model
git add <各ファイル名> OR git add .  (編集した全てのファイル)
git commit -m “add knn model function”
git push origin add_knn_model

gitの操作ミスを取り消したいときのコマンド

マージリクエストを出すまでにいくつかコマンドを打つ必要があるため、ミスをしてしまうことがあります。git add . をしたら関係ない周辺ファイルまでインデックスされてしまった、コミット文でスペルミスを見つけてしまったなど、直前の操作を取り消したい場合があると思います。よくあるgitコマンドの取り消し方法について簡単にまとめました。

git add を取り消したい場合

git reset

ちなみにこれは git reset –mixed HEAD を実行していることと同じです。
その辺りは、https://qiita.com/shuntaro_tamura/items/db1aef9cf9d78db50ffe

git commitを取り消したい場合

git reset --soft HEAD^

まとめ

GitLabでブランチを切ってからMerge Requestまでの流れについておさらいしました。実際の業務ではさらに色々なコマンドを覚える必要がありますが、よほどのことがない限りはこれらのステップが理解できていれば問題ないと思います。エンジニアに限らず、ビジネスサイドの方でもgitを使う場面はあると思うので、この機会に確認しておいてはいかがでしょうか。