Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Gitting Things Done

Gitting Things Done

Presented on September 21 2022 at the PHP Laravel meetup, Eindhoven, The Netherlands.
Git is the modern-day version management system of choice. We all know how to commit, push, pull and merge. But what about (interactive) rebasing, fixing up commits, cherry picking lines and bisecting the history?
And what are those atomic commits you keep hearing people talk about and why would they be of any use to you?

Come and learn how to get the most out of the tooling you already use every day, find ways to make life easier on the people who review your code and leave knowing how to create a clean commit history which is a joy to peruse.

Juliette Reinders Folmer

September 21, 2022

More Decks by Juliette Reinders Folmer

Other Decks in Programming


  1. “ There is no limit to the amount of remotes

    you can add or that can exist
  2. Squash vs Fixup ▪ Combines changes into one commit ▪

    Combines the commit messages + presents for edit ▪ Combines changes into one commit ▪ Throws away all but the original commit message
  3. About Commit Messages ▪ Short description (title) ▪ Long description:

    Describe the why's ▪ Reference links ▪ Use proper punctuation! Voiculescu Bogdan
  4. Give Credit Where Credit is Due Prefix: description Long description

    explaining why the changes were made, why they were made in this way. What other solutions were considered and rejected and for what reason. Reference(s): • https://.... Co-authored-by: Contributor Name <[email protected]>
  5. To Force Push Or Not To Force Push DO: ▪

    Non- collaborative branch, not pulled ▪ Pulled, rebased, no changes MAYBE ▪ Pulled, typo/CS fix DON'T: ▪ Collaborative branch, not pulled ▪ Pulled, review has started
  6. Git Bisect to the Rescue Bad Good Good or Bad

    ? Good or Bad ? Good or Bad ?
  7. Git Bisect to the Rescue Bad Good Good or Bad

    ? Good or Bad ? Good or Bad ?
  8. Git Bisect to the Rescue Bad Good Good or Bad

    ? Good or Bad ? Good or Bad ?
  9. Commit vs Ignore In repo .gitignore .git/info/exclude Composer composer.json composer.lock

    /vendor/ composer.lock NPM package.json /node_modules/ package-lock.json PHPUnit phpunit.xml.dist phpunit.xml .phpunit.result.cache custom-phpunit.xml IDE of choice /.idea/ OS specific *.bak .Trashes [Tt]humbs.db *.DS_store
  10. Keep Distribution Packages Clean # Exclude these files from release

    archives. /.gitattributes export-ignore /.gitignore export-ignore /phpunit.xml.dist export-ignore /tests/ export-ignore # Auto detect text files and perform LF normalization * text=auto # The above will handle all files NOT found below *.md text .gitattributes