はじめに
githubにPRされたコードをレビューするときに、githubで直接みてレビューを行うことが多いですが、
コードをローカルに持ってきて実行などして確認したいことがあります。その場合のローカルにチェックアウトする方法をメモします。
参考:
https://help.github.com/articles/checking-out-pull-requests-locally/
PRをローカルでチェックアウト
PRしてまだマージしていないPRをローカルにチェックアウトします。
まずはPRの番号をgithub上で確認して以下のコードを実行します。
git fetch origin pull/番号/head:ブランチ名
※ブランチ名はなんでも大丈夫です。
そしてブランチをチェックアウトします
git checkout ブランチ名
これでローカルでコードを確認できます。
WIP PR(Work In Progress Pull Request)の運用フロー(作業見える化)をメモ
コードレビューを最適化できるWIP PRについてメモしておく
WIPとは
WIPは作業途中(Work In Progress)という意味がある。通例としてgit上でwipといれたcommitを見かけた場合は、まだ作業途中という目印として使われる。一般的にcommit履歴が汚れるを嫌がり、ローカルではwipは合ってもサーバにはwipは上がらないようにする場合が多い。
※pull requestでwipがcommitメッセージについているのは基本ありえない。作業途中なcommitはpull requestしない。
WIP PR運用フロー
通常pull requestをすることがないwip状態のcommitをpull requestする考え方の運用フロー。
開発のフローとしてチーム全員の作業状況が分かり且つレビューワーは暇しない作業フローになる。
レビューワーは仕上がったpull requestを待つ事なく作業途中の過程を見る事ができるため戻り発生を減らす事に有効
これから作業をする場合に、事前にpull requestを作成して送る場合、gitは基本変更が合った場合にcommitを行うため、何も変更がない場合、commitもpull requestも行わない。
「変更がない」状態の空のcommitを作る事がgitではできるようになっているので、これから作業しようとしている内容をcommitメッセージに含めてcommit / pull requestを行うことで、wipのprフローを開始できる。
WIP PR運用フロー手順1(空のbranchを作成し作成したbranchへ移動する)
次の作業が分かりやすいブランチ名にしておく
git checkout -b feature/fizzbuzz
※masterのコピーとしておく
WIP PR運用フロー手順2(空のコミットを作成する)
commitメッセージはcommitの中身が分かる内容で。
git commit --allow-empty -m "fizzbuzz feature"
WIP PR運用フロー手順3(空のcommitをpushする)
git push origin feature/fizzbuzz:feature/fizzbuzz
WIP PR運用フロー手順4(pull requestする)
commitメッセージには通例[WIP]を入れておく
git pull-request -m "[WIP] fizzbuzz feature" -b upstream:master -h origin:feature/fizzbuzz
※hubコマンドが入っていない場合はgithubのブラウザ上からpull request
hubコマンドを使ってpull requestのコマンド
http://to-developer.com/blog/?p=1372
ここまでで空のwipをpull requestはOK
WIP PR運用フロー手順5(新規commitを更新する)
一旦作業が進んだら細かくコミットしてpushしておく
touch fizzbuzz.rb git add fizzbuzz.rb git commit --amend git push origin feature/fizzbuzz:feature/fizzbuzz
※commitオプションの–amendで以前のcommitを更新するとcommit履歴が汚くならない
これの繰り返しを行うことでレビューがシンプルに!
・・・・wip ・・・to be continued
githubに「pull request」を送れたりするhubコマンドを導入方法をメモ
hubコマンドはGitHub社が公開しており、githubに関する様々な処理をコマンドで実行する事ができるもの。
gitコマンドで既にできることを、シンプルなコマンドで解決したり、gitコマンドではないpull requestなどをコマンドで行う事ができるようになる。
※ 通常はgithubのブラウザからpull requestをする
またhubはgitコマンドを包括しており、hubコマンドでgitコマンドを全て使用することができるようになる。
hubのupstreamリポジトリのreadmeでインストールからコマンドの使い方まで載せているので参考にするとよい。
hubコマンドのリポジトリ:
https://github.com/github/hub
今回はmacでパッケージ管理はhomebrewを使用する
インストール
インストール
brew install --HEAD hub
設定
既存のgitコマンドは全てhubに置き換えられるようになる。
つまりは
git add .
は
hub add .
で、できるようになるが、慣れないためhubコマンドもgitコマンドで使えるようにalias設定をしておく
これはhubのreadmeに記載されている
シェルの設定ファイル:
eval "$(hub alias -s)"
※bashの場合は.bash_profile、zshの場合は、.zprofile
hubの使い方(git clone)
git cloneコマンドについてreadmeより、
git clone $ git clone schacon/ticgit > git clone git://github.com/schacon/ticgit.git $ git clone -p schacon/ticgit > git clone git@github.com:schacon/ticgit.git $ git clone resque > git clone git@github.com/YOUR_USER/resque.git
※gitはalias設定のhubをコールしているため、hubとしても動く
git cloneを行う場合にgithubのリポジトリ指定をなしにしてリポジトリ名のみで取得ができる。またはユーザ名の指定などもできるサンプル
これ以外にも省略できるコマンドはreadme参照
hubコマンドでpull request
git pull-requestコマンドについてreadmeより
# while on a topic branch called "feature": $ git pull-request [ opens text editor to edit title & body for the request ] [ opened pull request on GitHub for "YOUR_USER:feature" ] # explicit title, pull base & head: $ git pull-request -m "Implemented feature X" -b defunkt:master -h mislav:feature
オプションについて
-m : pull requestメッセージ
-b : プルリク先の指定
-h : プルリク元の指定
下記はつまり、メッセージが「Implemented feature X」でmislavのfatureブランチからdefunktのmasterブランチへpull requestのサンプルになる
git pull-request -m "Implemented feature X" -b defunkt:master -h mislav:feature
-mを指定しない場合は、指定しているエディターが起動する(commitと同様)ので指定のフォーマットで記載する
指定フォーマット:
[pull requestタイトル]
[改行]
[pull requestメッセージ]
使える便利コマンド
githubをブラウザで開いてリポジトリを参照するコマンド
git browse
githubをブラウザで開いてdiffを参照するコマンド
git compare
git compareコマンドについてreadmeより
$ git compare refactor > open https://github.com/CURRENT_REPO/compare/refactor $ git compare 1.0..1.1 > open https://github.com/CURRENT_REPO/compare/1.0...1.1 $ git compare -u fix > (https://github.com/CURRENT_REPO/compare/fix) $ git compare other-user patch > open https://github.com/other-user/REPO/compare/patch
coffee-break
Don't write code that useless.
1日5杯はコーヒー、カフェオレ飲みます。狭心症のため安静にします☆松本 雄貴
Kotlinでサービスリリース目指す!
iOSでチャットアプリ作成中。自然言語解析LSIを習得中
Mac / Android・iOS / Rails / Oracle
2017年 Lpic L2取得
2012年 Android技術者資格取得
2010年 OracleMasterGold10g取得
2008年 CCNAQiitaもたまに投稿
https://qiita.com/y-matsumoto東京近郊で常駐開発探してる方はこちらよりご連絡ください
SES企業でパートナー会社を探している企業様はこちらよりご連絡ください
スプリットカメラ iOS / Android
音声認識で聞いた日付から曜日当てアプリ Android
ソーシャルタイマー Android
カテゴリー
- ActiveRecord (2)
- Android (52)
- AndroidStudio (10)
- Ansible (1)
- AWS (1)
- Bash (18)
- Blog (7)
- BootStrap (1)
- CentOS (16)
- Chef (1)
- css (2)
- Eclipse (5)
- error (1)
- Facebook (2)
- Firebase (1)
- FuelPHP (16)
- Git (22)
- GitHub (3)
- Gradle (2)
- GraphAPI (1)
- Grunt (1)
- heroku (2)
- illustrator (1)
- iOS (17)
- Java (4)
- Jenkins (1)
- jQuery (3)
- Kotlin (2)
- Mac (22)
- nginx (1)
- Node.js (3)
- peco (1)
- php (5)
- Python (1)
- Rails (16)
- Ruby (11)
- shell (1)
- SNS (1)
- Swift (2)
- tmux (2)
- Vagrant (6)
- Vim (6)
- windows (2)
- WordPress (3)
- zsh (4)
- フリーランス (1)
- ライブラリ (1)
- 勉強会 (2)
- 宣伝 (1)
- 未分類 (2)
最近の投稿
- [MAC]HighSierraでgitプッシュエラー「Unable to negotiate with xxx.xxx.xxx.xxx port xx: no matching cipher found. Their offer: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se fatal: Could not read from remote repository.」
- [iOS]iOS11からFacebook,Twitter連携(シェアなど)廃止の対応方法
- [iOS]速報2017AppleSpecialEventのiOS11、iPhone8など発表内容について
- [iOS][Firebase]The default Firebase app has not yet been configured. Add `[FIRApp configure];
- [iOS]2017年9月リリースのiOS11で開発者が対応するべきこと
- 今人気の現金化サービスCASH(キャッシュ)を使ったレビュー
- [Pandoc][Mac]pandocでmarkdownからwordファイル作成
- [Android]映画サマーウォーズの聞いた日付(誕生日)から曜日当てをアプリ音声認識で簡単に実現
- [Android]起動しているActivityを取得するadb shell コマンド
- [Android][Kotlin]kotlin学習で参考になるサイト一覧
2023年12月 月 火 水 木 金 土 日 « 5月 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 アーカイブ
- 2018年5月
- 2017年9月
- 2017年8月
- 2017年7月
- 2017年6月
- 2017年5月
- 2017年2月
- 2017年1月
- 2016年12月
- 2016年7月
- 2016年6月
- 2016年1月
- 2015年12月
- 2015年11月
- 2015年10月
- 2015年9月
- 2015年8月
- 2015年7月
- 2015年6月
- 2015年5月
- 2015年4月
- 2015年3月
- 2015年2月
- 2015年1月
- 2014年12月
- 2014年11月
- 2014年6月
- 2014年5月
- 2014年4月
- 2014年3月
- 2014年2月
- 2014年1月
- 2013年12月
- 2013年11月
- 2013年9月
- 2013年8月
- 2013年7月
- 2013年6月
- 2013年5月
- 2013年4月
- 2013年3月
- 2013年2月
- 2013年1月
- 2012年12月
- 2012年10月
- 2012年5月
- 2010年6月
エントリ