Git

概要

Gitはバージョン管理システムである。

Memo

デフォルトブランチをmaster → mainに変えたときの対応

デフォルトブランチをmaster → mainに変えたとき、ローカルで実行して対応する。

git branch -m master main
git fetch origin
git branch -u origin/main main
git remote set-head origin -a

warning: refname ’xxx’ is ambiguous

pullやpushしたとき、↑が出てうまくいかなくなることがある。これは、ブランチ名とタグ名がかぶっていることが原因。どちらかを削除するとうまくいくようになる。

$ git branch -d xxx
$ git tag -d xxx

ゴミファイルを削除する

gitignoreしたディレクトリで、いつの間にかゴミファイルがたまりがち。

git clean -xdn # dry run
git clean -xdf # 実行

revertしたブランチを再開するとき

revertしたブランチの途中から再開すると、revertコミットのために差分が出ない。 なので、revertコミットをさらにrevertして、その上で作業を再開する。

git revert -m 1 {revertしたコミットハッシュ}

https://stackoverflow.com/questions/2389361/undo-a-git-merge-that-hasnt-been-pushed-yet/6217372#6217372

コミットハッシュ取得

タグをつけるときに便利。

LC=$(git rev-parse --short HEAD)
echo ${LC}
0f777f9

↓みたいな感じで。

docker build -t ghcr.io/kijimad/webapp:${LC} .

certエラーが出るとき

依存パッケージインストール時、httpsでcloneできないことがある。証明書がないエラー。

git config --global http.sslVerify false

git clone https/ssl error - Stack Overflow

バイナリファイルの差分

ファイルによって戦略を変えることができる。 特定のバイナリファイル…Wordファイルだったらこうやって変換してから差分を取る、など。 テキストに変換して、比較できる。

Git軽量化

しばらく使っていると不要なブランチが溜まってきて重くなるので、定期的に不要なものを削除する。

git gc && git fetch --prune

Gitクライアント

直にGitコマンドを打つほかに、クライアントを使って操作する方法がある。 プログラミングと密接に関係しているので、エディタに付属したものを使うと、同じインターフェイスで扱えて便利。 例えばEmacsではMagitパッケージが人気。

Tasks

TODO Git - Book

日本語で無料公開されている本。 Gitの仕組みの章がとても面白い。 実際のGitが内部で行っていることを、原始的なコマンドを使ってやってみるというもの。

Reference

Github Ranking | Github-Ranking

スター数のランキング。

Gource - a software version control visualization tool

Gitの美しい可視化ツール。

[Git] remoteのtagとbranchの名前が同じ場合の消し方 - Qiita

GitHub Actionsで間違えたときになる。調べないとわからない。

Git - 配管(Plumbing)と磁器(Porcelain)

基本的なGitの仕組みの解説。

Why Google Stores Billions of Lines of Code in a Single Repository - YouTube

なぜGoogleはモノレポで管理しているか。

How to Write a Git Commit Message

わかりやすいメッセージの書き方。

Archive

DONE Rebase on Magit

わかりやすく解説している。

今までコミットの修正したことなかったな。