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

Gitting Things Done

Gitting Things Done

Presented on March 15 2024 at the Dutch PHP Conference, Amsterdam, 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 ?

Come and learn how to get the most out of the tooling you use every day and leave knowing how to create a clean commit history which is a joy to peruse.

Juliette Reinders Folmer

March 15, 2024

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 Gaborfrom Hungary
  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