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したコミットハッシュ}
コミットハッシュ取得
タグをつけるときに便利。
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
バイナリファイルの差分
ファイルによって戦略を変えることができる。 特定のバイナリファイル…Wordファイルだったらこうやって変換してから差分を取る、など。 テキストに変換して、比較できる。
Git軽量化
しばらく使っていると不要なブランチが溜まってきて重くなるので、定期的に不要なものを削除する。
git gc && git fetch --prune
Tasks
TODO git diff がある場合もしくは untracked なファイルがある場合にエラーの終了コードを返すコマンド
差分があるとエラーにする。
$ test -z "$(git status -s)"
TODO Git の仕組み (1) - こせきの技術日記
Gitの仕組み。
TODO 難しいGitコマンドは、仕組みから理解してみよう - Qiita
Gitの仕組みの解説。
TODO Git - Book
日本語で無料公開されている本。 Gitの仕組みの章がとても面白い。 実際のGitが内部で行っていることを、原始的なコマンドを使ってやってみるというもの。
TODO コミットはスナップショットであり差分ではない - GitHubブログ
仕組みからの解説。
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はモノレポで管理しているか。
A useful template for commit messages — David Winterbottom
Git commitテンプレート。
How to Write a Git Commit Message
わかりやすいメッセージの書き方。