git rebase でコンフリクトした時の対処
開発ブランチdevelop
で作業をしている際にメインブランチmain
の内容を取り込む場面があります。
自分はその際にgit pull --rebase origin main
として取り込んでいるのですがこの時にコンフリクトを起こすことがよくあったのでメモとして。
develop
ブランチでgit pull --rebase origin main
を実行- コンフリクトがあった場合ファイルを適宜修正
git add .
を実行git rebase --continue
でリベースを続ける- コンフリクトがあった場合ファイルを適宜修正
といった以上の流れをコンフリクトがなくなるまで繰り返す。
もし仮に途中でリベースを辞めたいと思った時はgit rebase --abort
を実行するとgit rebase
を実行する前に戻ります。
rbenvを使ったRubyのバージョン管理
rbenvを使ったRubyのバージョン管理についてまとめてみます。
rbenvをインストール
rbenvは複数のRubyのバージョンを管理し、必要に応じてバージョンを指定して使うことが出来るツールです。 今回はhomebrewを使ってインストールします。
$ brew install rbenv
インストールできていることを確認するために、rbenvのバージョンを確認します。
$ rbenv -v rbenv 1.1.2 $ rbenv --version rbenv 1.1.2
-v
,--version
どちらでも大丈夫です。
rbenv ○.○.○
となれば正しくインストールされています。
Rubyをインストールする
以下のコマンドでインストール可能なRubyのバージョンが表示されます。
$ rbenv install --list $ rbenv install -l
上記のコマンド(どちらでも可)実行するとRubyのバージョンが表示されます。 今回は最新版のRuby3.0.0をインストールします。
$ rbenv install 3.0.0
インストールができたらインストールされたRubyのバージョンを確認します。
$ rbenv versions system * 2.7.1 (set by /Users/username/.rbenv/version) 3.0.0
*印がついているのが現在適用されているRubyのバージョンです。
Rubyのバージョンを切り替える
以下のコマンドでローカルな切り替えが可能です。 ローカルな切り替えとはディレクトリごとにバージョンを切り替えることです。
$ rbenv local バージョン指定
グローバルな切り替えはシステム全体で使用するRubyのバージョンを切り替えることです。
$ rbenv global バージョン指定
以上rbenvを使ったRubyのバージョン管理でした。
プッシュしてしまったコミットメッセージを変更する
gitを使っていく中でコミットメッセージの変更をすることがあったのでやり方をこちらにメモしておこうと思いました。 これから行うのはすでにリモートにプッシュしてしまったコミットのメッセージの変更です!
- git rebase -i HEAD~n 上記のコマンドを実行することでHEADからn個までのコミットを表示できる
$git rebase -i HEAD~4 pick 3ba3a2e commit comment 1 pick 6ef356e commit comment 2 pick d84a911 commit comment 3 pick 9a34966 commit comment 5
今回はcomment 5
をcomment 4
に変更します。
コミットメッセージを編集する場合pick
をedit
に変えてあげます。
pick 3ba3a2e commit comment 1 pick 6ef356e commit comment 2 pick d84a911 commit comment 3 edit 9a34966 commit comment 5
編集が終わったら:wq
で保存終了します。
そうすると以下のような表示が出ると思います。
$ git rebase -i HEAD~4 Stopped at 9a34966... comment 5 You can amend the commit now, with git commit --amend Once you are satisfied with your changes, run git rebase --continue
- コミットメッセージの編集 以下のコマンドでメッセージの編集を行っていきます。
$git commit --amend
コマンドを実行すると以下のような表示が出ると思います。
comment 5 # Please enter the commit message for your changes. Lines starting # with '#' will be ignored, and an empty message aborts the commit. #以下省略
メッセージを編集します。今回はcomment 4
に変更。
comment 4 # Please enter the commit message for your changes. Lines starting # with '#' will be ignored, and an empty message aborts the commit. #以下省略
編集が終わったら:wq
で保存終了。
以下のような画面が出ればokです!
$ git commit --amend [detached HEAD ] comment 4追加 Date: Wen Dce 20 19:11:02 2020 +0900 1 file changed, 1 insertion(+) create mode 100644 comment 4
以下のコマンドでrebaseを実行し終了。
$git rebase --continue
- リモートリポジトリにプッシュする
変更した結果をリモートへプッシュします。
プッシュする場合は
git push -f
ではなくgit push --force-with-lease
を使いましょう!git push --force-with-lease
はローカルとリモートを比較し、ローカルが最新ならプッシュに成功します。 複数人でプロジェクトを進めている場合、git push -f
してしまうとリモートが最新なのにその変更を打ち消してしまう恐れがあります。
$git push --force-with-lease origin master
これでリモートの方もコミットメッセージを変更することができました!
Machida.rb #2に参加してみて
6/5(金)に開催されたMachida.rb#2に参加しました。オーガナイザーは株式会社ラグザイアの森塚さんです!
テーマ
- Numberd parameters
- irb
- パターンマッチング
- Enumerable#tally etc...
内容
Ruby2.7の新機能について例題を動かしながら教えていただきました。
Numberd parameters
2つの出力結果が同じになるのは不思議に思いました。上の処理ではデータが全て入るのに、下の処理ではkeyとvalueがそれぞれ展開されて出力される。
パターンマッチング
inを使ってマッチする構文を見つけて記述してくれる。nameとageという変数に値が代入されている感じ。
tally
tallyメソッドを使うと同じ要素の数をhashで返してくれる。
出てきた内容で分からないことも多かったのでこれから勉強して少しずつわかることを増やしたいなと感じました!ツールとしてesa.ioを使用したのですがみんなで編集してる感じがしてとてもよかったです!
感想
今回はフィヨルドで学習されている方も多く参加していて参加しやすかったです。
勉強会というものが初めてだったので少し緊張もあり不安でしたが、初心者にもわかりやすく解説していただいた皆さんには感謝しかないです...
こういった勉強会に参加するともっと知りたいと思うことが多いので今後もいろいろな勉強会に参加したいと感じました!