7
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

gitコマンドを使ったブランチ作成からマージまでの流れ(GitHub Desktopとの比較あり)

Last updated at Posted at 2021-02-13

※2022年から技術系の記事は個人ブログに投稿しております。ぜひこちらもご覧ください→yamaday0u Blog

アプリ開発のバージョン管理に使うGitHubには、GitHub DesktopというGUIで操作できる便利なアプリがあります。

しかし、キーボードによるコマンド入力(CLI)で操作する方がGitHubの操作スピードが上がるため、ブランチ作成からマージまでの一連の流れを、一部GitHub Desktopの操作と比較しながらコマンドを覚えていきます。

注意:Ruby on Railsでの開発を前提としています。

新しいブランチを作成する・ブランチを切り替える

git branch

git branchは作成済みのブランチを一覧表示します。
現在選択されているbranchは先頭に'*'が付いています。

ターミナル
git branch
  first-branch
* master

git branch ブランチ名

新しいブランチを作成します。

ターミナル
git branch second-branch master //masterブランチからsecond-branchを作成

git checkout ブランチ名

ブランチを切り替えることができます。

ターミナル
git checkout second-branch
Switched to branch 'second-branch'

git branch
  first-branch
* second-branch
  master

git checkout -b ブランチ名

新しいブランチを作成した上で、そのブランチに切り替えることができます。

ターミナル
git checkout -b third-branch

Switched to a new branch 'third-branch'

git branch
  first-branch
  second-branch
* third-branch
  master

ブランチをリモートに登録する

git push -u origin 作成したブランチ名

作成したブランチをリモートリポジトリに登録します。
GitHub Desktopでいうpublish branchですね。

ターミナル
git push -u origin third-branch
Total 0 (delta 0), reused 0 (delta 0)
remote: 
remote: Create a pull request for 'third-branch' on GitHub by visiting:
remote:      https://github.com/ユーザー名/リポジトリ名/pull/new/third-branch
remote: 
To https://github.com/ユーザー名/リポジトリ名.git
 * [new branch]      third-branch -> third-branch
Branch 'third-branch' set up to track remote branch 'third-branch' from 'origin'.

GitHubでbranchを確認すると、ブランチが登録されているのがわかると思います。

変更したファイルをステージングする(コミットの対象にする)

git diff HEAD

差分を確認できます。HEADは前回のコミットを意味しますが、記述しなくてもデフォルトで前回コミットとの差分を表示します。
たとえばRailsでusers_controller.rbとroutes.rbを更新した場合は以下のように表示されます。

ターミナル
git diff
diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb
index a6d5714..4e32689 100644
--- a/app/controllers/users_controller.rb
+++ b/app/controllers/users_controller.rb
@@ -3,4 +3,8 @@ class UsersController < ApplicationController
     @user = User.find(params[:id])
     @items = Item.where(user_id: params[:id]).order('created_at DESC')
   end
+
+  def edit
+    @user = User.find(params[:id])
+  end
 end
diff --git a/config/routes.rb b/config/routes.rb
index a1e37f2..a545305 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -5,6 +5,6 @@ Rails.application.routes.draw do
     resources :purchases, only: [:index, :create]
   end
   devise_for :users
-  resources :users, only: [:show]
+  resources :users, only: [:show, :edit]
 end

GitHub Desktopでいうとこの状態ですね。
Image from Gyazo

git addとgit diff --staged

ファイルに変更を加えたら、git add ファイル名でコミットの対象にするファイルを選びます。git diff --stagedでステージングエリアのファイル(addされたファイル群)を確認できます。試しにroutes.rbをaddしてステージングエリアを確認します。

ターミナル
git add config/routes.rb 
git diff --staged
diff --git a/config/routes.rb b/config/routes.rb
index a1e37f2..a545305 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -5,6 +5,6 @@ Rails.application.routes.draw do
     resources :purchases, only: [:index, :create]
   end
   devise_for :users
-  resources :users, only: [:show]
+  resources :users, only: [:show, :edit]ml
 end

GitHub Desktopでいうとこの状態です。route.rbのみチェックマークが付いている状態です。
Image from Gyazo

またgit add .を入力すると全ての変更されたファイルをコミットの対象にできます。
ちなみに、間違えてaddしてしまったファイルをステージングエリアから取り除きたい場合は以下のコマンドを入力します。

git reset HEAD 取り除きたいファイル名

ファイルの変更をコミット&プッシュする

git commit

ステージングエリアにあるファイルをコミットします。-m "コメント"オプションを記述することで、コミット時のコメントも一緒に登録できます。

ターミナル
git commit -m "Add edit action to users routes"
[third-branch(現在のブランチ名)] Add edit action to users routes
 1 file changed, 1 insertion(+), 1 deletion(-)

git push

リモートリポジトリのmasterブランチにプッシュします。

ターミナル
git push

GitHub DesktopのPush originにあたります。
Image from Gyazo

プルリクエストを作成する

gitコマンドでプルリクエストを作成する方法が分からないので、これまで通りこのステップはGitHub上で行います。

マージする

プッシュ後、リモートリポジトリのmaster(origin)にマージする方法は調査中のため、、このステップもGitHub上で行います。

プルする

マージ後のリモートリポジトリのmaster(origin)をローカルリポジトリのmasterにpullするコマンドは以下の通りです。

ターミナル
git checkout master
git fetch
git merge

ブランチの削除

git branch --delete

最後に、マージしたローカルブランチを削除します

ターミナル
git branch --delete third-branch(削除したいブランチ名)

リモートリポジトリのブランチを削除する場合は以下のコマンドを入力します。

ターミナル
git push --delete origin third-branch(削除したいブランチ名)

以上で、ブランチ作成からマージまでの流れが完了しました。
gitコマンドを使った最低限の流れを書いたので、ここから少しずついろんなgitコマンドを使えるようになりたいですね!

参考資料

Git Documentation Reference Manual
Git基本操作。ローカルでの作業からリモートリポジトリのマージまで。
git push コマンドの使い方と、主要オプションまとめ
Qiita
gitのブランチ作成〜リモートへの登録(git checkout ~ git push -u origin)

7
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?