• git log -L :MyClass:path/to/file
  • git blame -C -C -C -w
    • -w ignores whitespaces
    • -C (detect Code movement) ignores file moves, the more you include, the smarter it is about ignoring non-semantic modifications (but it takes longer to run)
  • git log -S my_keyword
    • Keyword based search, applies to situations where a file/line may have been removed and is no longer in git
  • git config --global rerere.enabled true
    • rerere: REuse REcorded REsolution
    • Tells git to remember how merge conflicts were resolved, so it can properly resolve them if it encounters a similar conflict in the future
  • git config --global column.ui auto
    • Show git branches in multiple columns
  • git config --global branch.sort -committerdate
    • Sort git branches by recency of commit
  • SSH signing of GitHub commits
  • git maintenance start
    • Perform maintenance tasks for a repo on a cron job, instead of tacking it onto another git command that you actually run
    • This effectively makes things work much much faster
  • git clone
    • --filter=blob:none: Clone a repository without the historical files, except data for the latest commit
      • A tradeoff is that blames take longer to run, as it has to recursively pull historical blobs down
  • git sparse-checkout set <subdir1> <subdir2>
    • Work with a subset of files that you care about in a large monorepo

GitHub

FeatureDsecription
Auto-mergingAuto-merge an approved PR if CI passes
Merge queue