cherry-pickでブランチ整理
はじめに
プルリクやブランチ管理ミスった時に整理する術として「cherry-pick」は、とても便利です。 これから行う操作は、ターミナル(Mac)やGit Bash(Windows)での操作を想定しています。
cherry-pickとは
他ブランチに存在する特定のコミットのみを反映させるコマンドです。
やりたいこと
3つのコミットのうち2つのコミットだけを反映させたブランチを作りたい。
操作
まずコミットのログを確認してみましょう。
現在のコミットは、以下の通りです。
・third commit(3番目)
・second commit(2番目)
・first commit(1番目)
$ git log commit ハッシュ値3 (HEAD -> master, origin/master, master) Author: ユーザ名 <xxx@xxx.co.jp> Date: Thu Mar 7 22:17:21 2019 +0900 third commit commit ハッシュ値2 Author: ユーザ名 <xxx@xxx.co.jp> Date: Thu Mar 7 22:15:28 2019 +0900 second commit commit ハッシュ値1 Author: ユーザ名 <xxx@xxx.co.jp> Date: Thu Mar 7 22:05:52 2019 +0900 first commit
新しいブランチは、以下の通り反映させたい。
・third commit(3番目)
・first commit(1番目)
では、新しいブランチを作り、切り替えます。
$ git branch branchname $ git branch branchname * master $ git checkout branchname Switched to branch 'branchname'
新しく作ったブランチのコミットの確認です。
masterと同じコミットですが念のため。。。
$ git log commit ハッシュ値3 (HEAD -> branchname, origin/master, master) Author: ユーザ名 <xxx@xxx.co.jp> Date: Thu Mar 7 22:17:21 2019 +0900 third commit commit ハッシュ値2 Author: ユーザ名 <xxx@xxx.co.jp> Date: Thu Mar 7 22:15:28 2019 +0900 second commit commit ハッシュ値1 Author: ユーザ名 <xxx@xxx.co.jp> Date: Thu Mar 7 22:05:52 2019 +0900 first commit
ここからが本番です。 1番目のコミットまで状態を戻します。
$ reset --hard ハッシュ値1
その後、cherry-pickで欲しいコミットを持ってくれば完了です。 お疲れ様でした。
$ git cherry-pick ハッシュ値3 [xxxxx] third commit Date: Thu Mar 7 22:17:21 2019 +0900 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 b.txt
$ git log commit ハッシュ値3 (HEAD -> branchname) Author: ユーザ名 <xxx@xxx.co.jp> Date: Thu Mar 7 22:17:21 2019 +0900 third commit commit ハッシュ値1 Author: ユーザ名 <xxx@xxx.co.jp> Date: Thu Mar 7 22:05:52 2019 +0900 first commit Date: Thu Mar 7 22:05:52 2019 +0900
iPhoneでSuicaの新規発行できなくなったんだけど!?
結論から言うと、
Suica削除(払い戻し処理など)を行なった日は、新しいSuicaを発行出来ないそうだ。 (次の日の朝5時ごろから新しく発見可能。)
ある日、
今まで使っていた定期券を変えるために、iPhoneに入っていた定期券の「払い戻し処理」を行いSuicaを削除した。
そこまでは順調だった。。。
「さて、新しくSuica作り直すか!」
名前、年齢、住所...クレカ情報の入力。
...クレカ情報を受け付けてくれない。
今まで使っていたのになぜ!? (他のカードも使ってみたが、結局エラーで発行出来なかった。。。)
そこで、カスタマーサポートに連絡したところ翌日の5時まで新規Suica発行が出来ないことが、発覚した。
Suica削除→新規Suica発行する時は、時間帯などにお気をつけてください。 (その日使う前に、新規発行しようとしてしまったから切符を買う羽目になった。。。)
Junit mock作成
mockの作り方がわからんという初心者が対象になります。
メモ書き程度ですが、お役に立てればと思います。
1つ目 : @injectアノテーションの付いたクラスのメソッドのmockを作るときの例
[main.java] @inject Hoge hoge; public void methodA(String str){ int a = 10; String b= hoge.methodB(a); . . . . }
[mainTest.java] public void test_methodA_001() throws Exception { new Expectations() {{ hoge.methodB(anyInt); result="文字"; //1回目の結果 result=new Exception(); //2回目の結果 }}; for(int count = 0; count < 2; count++){ //Execute try{ methodA("テスト") // 1回目と2回目で結果が違うはず←確認してみて! } catch(Exception e) { System.out.println("2回目にエラーが投げれられてくる。"); } }