理系学生日記

おまえはいつまで学生気分なのか

git

Gitで変更のあったファイル一覧をコミットメッセージや空行なしで抽出する

git

課題 ファイル一覧の抽出については--name-onlyを使うのはよく知られているテクニックです。 例えば以下では、一週間前からコミットされたファイルを抽出しています。しかし、コミットハッシュやコミットメッセージは不要です。どうしたものでしょう。 $ git…

git commit --amendでエディタが立ち上がるのをなんとかしたい

git

commitを綺麗にするのにgit commit --fixupとgit rebase --autosquashが便利というエントリを以前に書きました。 一方で、commitを整理するというユースケースにおいて一番使っているのはgit commit --amendです。 このブログを書く時なんかはほぼこちらしか…

毎回go.sumのconflictを解消するのがつらすぎるので、.gitattributesでunion merge driverを使うよう指定する

Golangのツールをチームで開発しているのですが、Merge Requestをmergeする度にgo.sumとのconflictが発生する。つらい。 実のところは「つらすぎる」というほどつらくはないのですが、毎回conflict markerの<<<<<<<を消していく作業で人生を浪費するのはつら…

コミット履歴を綺麗にするときの`git commit --fixup`と`git rebase --autosquash`

git

Pull Request(PR)やMerge Request(MR)を作る中で、コミット履歴はできるだけ綺麗にしておきたいものです。 プルリクエストについて - GitHub Docs Merge requests | GitLab ぼくはあまりコミット履歴の綺麗さを気にしない方でした。 しかし大きめのPRやMRを…

対象ファイルやディレクトリがない時でも`git rm`を正常終了させたい

git

git rm -rをスクリプトに組み込む中で、「このディレクトリが存在するかはスクリプト実行時にしかわからない」というケースがありました。 git rmは対象のファイルやディレクトリがない場合、エラーを返却します。これは-fを付与した時も変わりません。 $ gi…

git log で特定日時以降に変更したファイル一覧を取得する

git

Git を用いて、特定日時以降に更新されたファイルの一覧を取得したい要件がありました。 これを素直に取得する方法がなさそうだったので、以下のようにして代用しています。 $ git log --after 2020/07/01 --name-only --pretty=oneline --full-index | grep…

Gitでの各種操作の取り消し・修正方法

VCS を使ったときのメリットは多々ありますが、そのうちの一つは、いつでも修正内容をもとに戻せることだと思います。 ローカルで修正した内容をもとに戻したい git checkout git restore 直前の commit の内容を変更したい commit を取り消したい git reset…