Group Group Group Group Group Group Group Group Group Group Shape Group Group Group Group Group Group Group Group Group Group Group Group Group Group Group Group Group Group Group Group Group Group Group Group Group Group Group Group Group Group Group Group Group Group Group Group Group
Skip to Content
  • iii. Dedications
  • More
    • NewsletterNewsletter
    • ForumsForums
Sign In
Create a free account
  • Search
  • Notebook
  • Customise
Pro

Advanced Git

Second Edition Git 2.32, Console

Before You Begin

Section 0: 5 chapters
  • i. What You Need
  • ii. Book Source Code & Forums
  • iii. Dedications
  • iv. About the Team
  • v. Introduction
    • Enter the video courses
    • How to read this book
    • Section I: Advanced Git
    • Section II: Workflows

Section I: Advanced Git

Section 1: 7 chapters
  • 1. How Does Git Actually Work?
    • 1.1 Everything is a hash
    • 1.2 The inner workings of Git
    • 1.3 The Git object repository structure
    • 1.4 Viewing Git objects
    • 1.5 Key points
    • 1.6 Where to go from here?
  • 2. Merge Conflicts
    • 2.1 What is a merge conflict?
    • 2.2 Handling your first merge conflict
    • 2.3 Merging from another branch
    • 2.4 Understanding Git conflict markers
    • 2.5 Resolving merge conflicts
    • 2.6 Editing conflicts
    • 2.7 Completing the merge operation
    • 2.8 Challenge: Resolve another merge conflict
    • 2.9 Key points
    • 2.10 Where to go from here?
  • 3. Stashes
    • 3.1 Introducing git stash
    • 3.2 Retrieving stashes
    • 3.3 Popping stashes
    • 3.4 Applying stashes
    • 3.5 Merge conflicts with stashes
    • 3.6 Challenge: Clean up the remaining stash
    • 3.7 Key points
    • 3.8 Where to go from here?
  • 4. Demystifying Rebasing
    • 4.1 Why would you rebase?
    • 4.2 What is rebasing?
    • 4.3 Creating your first rebase operation
    • 4.4 A more complex rebase
    • 4.5 Resolving errors
    • 4.6 Orphaned commits
    • 4.7 Merging vs rebasing
    • 4.8 Challenge: Rebase on top of another branch
    • 4.9 Key points
  • 5. Rebasing to Rewrite History
    • 5.1 Reordering commits
    • 5.2 Interactive rebasing
    • 5.3 Squashing in an interactive rebase
    • 5.4 Creating the squash commit message
    • 5.5 Reordering commits
    • 5.6 Rewording commit messages
    • 5.7 Squashing multiple commits
    • 5.8 Challenge 1: More squashing
    • 5.9 Challenge 2: Rebase your changes onto main
    • 5.10 Key points
    • 5.11 Where to go from here?
  • 6. Gitignore After the Fact
    • 6.1 Getting started
    • 6.2 .gitignore across branches
    • 6.3 How Git tracking works
    • 6.4 Updating the index manually
    • 6.5 Removing files from the index
    • 6.6 Rebasing isn’t always the solution
    • 6.7 Using filter-branch to rewrite history
    • 6.8 Challenge: Remove IGNORE_ME from the repository
    • 6.9 Key points
    • 6.10 Where to go from here?
  • 7. The Many Faces of Undo
    • 7.1 Working with git reset
    • 7.2 Working with the three flavors of reset
    • 7.3 Using git reflog
    • 7.4 Finding old commits
    • 7.5 Using git revert
    • 7.6 Key points
    • 7.7 Where to go from here?

Section II: Git Workflows

Section 2: 5 chapters
  • 8. Centralized Workflow
    • 8.1 When to use the centralized workflow
    • 8.2 Centralized workflow best practices
    • 8.3 Getting started
    • 8.4 Key points
  • 9. Feature Branch Workflow
    • 9.1 When to use the Feature Branch workflow
    • 9.2 Getting started
    • 9.3 Merging the feature branches into main
    • 9.4 Key points
  • 10. Gitflow Workflow
    • 10.1 When to use Gitflow
    • 10.2 Chapter roadmap
    • 10.3 Types of Gitflow branches
    • 10.4 Installing git-flow
    • 10.5 Initializing git-flow
    • 10.6 Key points
  • 11. Forking Workflow
    • 11.1 Getting started
    • 11.2 A fork is simply a clone
    • 11.3 Exploring the code
    • 11.4 Fixing the custom divisors bug
    • 11.5 Opening a pull request
    • 11.6 Rewinding your main branch
    • 11.7 Updating your fork via GitHub
    • 11.8 Updating your fork using an upstream remote
    • 11.9 Fetching changes from other forks
    • 11.10 Key points
  • 12. Conclusion
Home iOS & Swift Books Advanced Git

iii
Dedications

“For Russ and Skip.”

— Chris Belanger

“To Linus Torvalds, for freeing us from SVN.”

— Jawwad Ahmad

iv. About the Team ii. Book Source Code & Forums

Have a technical question? Want to report a bug? You can ask questions and report bugs to the book authors in our official book forum here.

© 2022 Razeware LLC