gitでコンフリクト

経緯

どうせ削除するだけだから、masterをマージしないでいいやと、以下のように作業を行いました。

  1. 最新ではないmasterからブランチを作成
  2. ブランチ内でファイルを削除
  3. コミット
  4. pull request

すると、なんということでしょう。削除したファイルがコンフリクトを起こしているではありませんか。 ちゃんとしてって言われてしまった。

対応方法

以下の手順で、対応を実施。

  1. ローカルのmasterを最新へ
  2. ブランチ側でrebase
  3. 削除したファイルはgitからも削除し、git add
  4. リモートブランチを再push
$ git checkout master
$ git pull

$ git checkout feature/new
$ git rebase

$ git rm deletedfile1 deleted files2
$ git add .

$ git push origin :feature/new
$ git push origin feature/new

原因

HEAD情報が異なるから起きているらしい。 業務的?には、このファイルなくなってるけど、本当にいいの?って確認のようだ。

db:seedでデータを取り込むときの話

目的

railsでDBへ初期データを登録する際、db:seed を使うのが良いらしい。 ただ、db/seeds.rb はRubyコードなので運用を考えると、CSVなりなんなりにしておくのが良いのだろうなと思うわけです。 つまり、人事からもらう部署データを読み込んで、、、なんてときにExcelでデリバリをしてすぐCSVに変換すればよいわけですから。

実施方法

以下のようなコードを書く。

require "csv"

# Department
CSV.foreach('db/csv/department.csv') do |row|
  Department.create(:id => row[0], :name => row[1])
end

あとはcsvファイルをdb/csv/ディレクトリに放り込めば良い、と。