※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
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のみチェックマークが付いている状態です。
また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にあたります。
プルリクエストを作成する
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)