# So You Think You Know Git Part 2 - DevWorld 2024 ## Switch and Restore Wrapper around the `checkout` command to make more sense. You can do: - `git switch branch` instead of `git checkout bracnh` - `git restore file.txt` instead of `git checkout file.txt` ![](Pasted%20image%2020240417084933.png) ## Git Hooks ![](Pasted%20image%2020240417084959.png) useful ones: ![](Pasted%20image%2020240417085036.png) uses: - Commit message formatting - package install - update ctags - submodule status - tabs or spaces - linting - large files - test passes Helpers (installable external tools): - pre-commits - husky ## Attributes run files through intermediates and diff that: ```bash echo '*.png diff=lexif' >> .gitattributes git config diff.exif.textconv exiftool ``` ## Fixup Commits `git commit --fixup=` `git rebase --autosquash` ## Rebasing Stacks move dangling branches reference when doing a rebase `git rebase --update-refs` ## Scaling Git top level command `scalar`, it's only used to clone huge repositories. ## Worktrees - working on more than one branch at a time - provide a new working directory to each branch ![](https://www.youtube.com/watch?v=Md44rcw13k4)