kakakakakku blog

Weekly Tech Blog: Keep on Learning!

Git

Git / GitHub に入門するならまずこの一冊 /「いちばんやさしい Git & GitHub の教本 第2版」を読んだ

「いちばんやさしい Git & GitHub の教本 第2版」を読んだ.「いちやさ」と謳っている通り,本当に本当に丁寧に書かれていて,説明の歩幅も小さく,Git / GitHub の初学者でも挫折することなく読み進められる一冊だった.また情報量も意図的に抑えられている…

Software Design 2022年4月号の特集「本質から学ぶ Git」を読んだ

「Software Design 2022年4月号」を読んだ.本誌の第2特集「堂々と使える!人に教えられる!本質から学ぶ Git」に寄稿をされた id:syobochim に献本(ギフトコード)をもらったので第2特集を中心にまとめる.献本ありがとうございます! Software Design (ソ…

GRC (git-remote-codecommit) をサポートした ghq v1.2.0 を試した

Git リポジトリを操作するために使っている ghq が,2021年5月にリリースされた v1.2.0(bugfix も含めると v1.2.1)で AWS CodeCommit の HTTPS GRC (git-remote-codecommit) をサポートしていた.さっそく動作確認をしてみた! github.com brew upgrade gh…

git worktree コマンドを使って複数ブランチを並行して操作する

個人で使っている Git リポジトリ(GitHub リポジトリ)の中に「複数ブランチを並行して操作する頻度が高いリポジトリ」がある.例えば,以下のように「4個」のブランチがあり,どれも操作する可能性がある場合など.今までは頻繁にコミット(git commit コ…

ghq で「複数の root ディレクトリ」からリポジトリを探す

ghq は「複数の root 設定」に対応している.例えば GitHub と CodeCommit と ${GOROOT}/src など,それぞれのディレクトリを対象に ghq list コマンドでリポジトリを探せる(個人的には ghq list + peco).最高すぎる!設定自体は gitconfig (~/.gitconfig…

よく使う "hub" コマンドを調べて "gh" コマンドに移行した

最近まで GitHub リポジトリを操作するときに ghq コマンドと hub コマンドを使っていた.リポジトリを git clone したり ~/ghq 直下のディレクトリに移動する場合に ghq コマンドと peco を使って,その他の操作は hub コマンドと git コマンドを使っていた…

gibo コマンドを使って .gitignore のテンプレートを簡単に作成する

ブログに載せるサンプルコードを管理したり,仕事でプロトタイプを実装することが多かったり,とにかく Git リポジトリを新しく作る機会が多くある.そのときに毎回似たような .gitignore を作ることになり,面倒だった.共通的な設定はホームディレクトリの…

モノリポ時代に知っておくと便利な「git sparse-checkout」

今まで使っていなかった Git コマンドを学んでいく.今回は git sparse-checkout を試す. git-scm.com git sparse-checkout とは? コマンド名にある sparse は「わずかな」という意味で,Git リポジトリの「一部」を取得できる.git clone --depth を使っ…

リモートモブプログラミングで Git Handover をシュッと実現する「mob」コマンド

「モブプログラミング」を採用すると「全員で同じタスクに取り組む (WIP 1)」ため,複雑な Git ブランチ戦略は必要なくなる.例えば master ブランチと develop ブランチだけで運用することもできる.今回紹介する mob コマンドを使うと,モブセッションで繰…

git diff の結果を HTML に変換する「diff2html-cli」

最近 git diff の結果を GitHub プルリクエストのようなインタフェース (HTML) に変換する必要があった.既にツールがあるだろうと思って調べたところ「diff2html-cli」を使えば git diff の結果を HTML に変換できるとわかった.今回は diff2html-cli を紹…

git checkout の代替としてリリースされた git switch と git restore

Git

2019年8月にリリースされた Git 2.23 から,Experimental(実験的機能)として新コマンド git switch と git restore が使える.今までずっと使ってきた git checkout は機能が多すぎたため,機能を分割し git checkout の代替としてリリースされた.個人的…

「ghq handbook」を読んで ghq を使った最高のリポジトリ管理を体験しよう

2020年1月に Leanpub で出版された「ghq handbook」を読んだ.本書は Leanpub で $4.99 から購入できる. leanpub.com リポジトリ管理を楽にするコマンドラインツール ghq 自体は前から知っていたけど,今までの運用(特定のディレクトリ直下にひたすら git …

Git リポジトリ URL を書き換える git-config の設定 "insteadOf" と "pushInsteadOf"

git-config(~/.gitconfig など)に url.<base>.insteadOf もしくは url.<base>.pushInsteadOf を設定すると,Git リポジトリ URL(プロトコル含む)を書き換えることができる.例えば GitHub リポジトリを git pull するときは HTTPS URL を強制し,git push するときは</base></base>…

includeIf を使って git config をプロジェクトごとに読み替える

GitHub と AWS CodeCommit を併用したり,プロジェクトごとに別アカウントを使ったり,リポジトリごとに git config を変える場面もある.今までは個人用 GitHub を global 設定とし,別アカウントはリポジトリごとに git config --local コマンドで設定をし…

知っておくと便利な git clone --depth と git diff --indent-heuristic

コミット履歴が無駄に多く,黒歴史のある Git リポジトリで開発をする場合,初回の git clone が非常に遅いという問題がある.コミット数に依存せずに素早く落とせる方法を探していて,最近(今さら...!) git clone の --depth オプションのことを知った.…

Git で特定のブランチからファイルをコピーする

今日は Git コマンドの奥深さを感じた! 結構 Git には詳しい方だと自負していたけど,全然知らないことあるなーと痛感した. git show git show で「特定のブランチにあるファイル」や「特定のコミットでのファイル」を見ることができる.コロンを忘れずに…

ブランチを最新コミット順に並べたら幸せになれた

複数のブランチで並行開発をしていると,気付いたらブランチが増えてしまってることがよくある. ブランチを切り替えようとしたときに「どのブランチだっけ?」って考えてしまったり. 定期的にブランチを削除するようにしてるけど,開発に忙殺されているフ…