GitHubの共同創設者であるスコット・シャコンが、Gitの使用方法と最新の機能について話している動画
主に以下を説明している
詳細は以下にメモとして記載しておく
昔からある機能の説明と更新
- エイリアスを設定
alias gb='git branch' - グローバルエイリアスも活用して全てのリポジトリに適用する
git alias -g gb='git branch' - !をつけるとシェルスクリプトが実行できる
git config alias.bb !better-branch.sh - includeIfディレクティブを使用して、特定のディレクトリ内の設定を読み込む
git blame -L <start>,<end>:<file path>: ファイルの指定した行の範囲の更新情報を表示git blame -w -C <file path>: -wでスペースを消して、同じコミットで変更された他のファイルから移動またはコピーされた行を検出する
このオプションを 2 回指定すると、コマンドはファイルを作成するコミット内の他のファイルからのコピーをさらに検索する
このオプションを 3 回指定すると、コマンドはさらに、コミット内の他のファイルからのコピーを検索するgit log -S <string> -p: 文字列を探して更新のあったファイルのログを表示し、-pでファイルの中まで表示するgit diff --word-diff: 単語ベースの差分を表示git config --global rerere.enabled true: REuse REcorded REsolution(マージコンフリクトの自動解決機能)
新機能
git branch --column: ブランチを列で表示(llとlsの違いみたいな)git push --force-with-lease: ローカルrefとリモートrefを比較しローカルが最新か判定し、最新でなければPUSHが失敗する(より安全に)git maintenance start: リポジトリのメンテナンスを自動化(Git - git-maintenance Documentation)
大規模リポジトリ向けのGitツール
- prefetch: 定期的に
git maintenance startコマンドを実行することで、指定されたプロジェクトのデータをバックグラウンドで取得し、git fetchコマンドを実行した場合の取得データ量が大幅に削減され、操作が高速化する - commit-graph:
get commit-graphコマンドを実行することで、リポジトリのコミットグラフを生成し、ログ操作が高速化するが、初回の実行には時間がかかる - filesystem monitor:
git config fs.monitorを設定することで、ファイルシステムの変更を監視するデーモンが起動し、git statusコマンドの実行が高速化する - 部分クローン:
git cloneコマンドに--filterオプションを使用することで、一部のオブジェクトをフィルタリングして取得でき、リポジトリのダウンロード時間が短縮できる
モノレポ
- sparse-checkout:
git sparse-checkoutコマンドを使用することで、特定のディレクトリのみをチェックアウトできる
GitHubの機能