You are previewing Git for Teams.
O'Reilly logo
Git for Teams

Book Description

You can do more with Git than just build software. This practical guide delivers a unique people-first approach to version control that also explains how using Git as a focal point can help your team work better together. You’ll learn how to plan and pursue a Git workflow that not only ensures that you accomplish project goals, but also fits the immediate needs and future growth of your team.

The first part of the book on structuring workflow is useful for project managers, technical team leads, and CTOs. The second part provides hands-on exercises to help developers gain a better understanding of Git commands.

Table of Contents

  1. Foreword
  2. Foreword
  3. Preface
    1. Acknowledgments
  4. Introduction
    1. Conventions Used in This Book
    2. Using Code Examples
    3. Safari® Books Online
    4. How to Contact Us
  5. I. Defining Your Workflow
  6. 1. Working in Teams
    1. The People on Your Team
    2. Thinking Strategies
    3. Meeting as a Team
      1. Kickoff
      2. Tracking Progress
      3. Cultivating Empathy
      4. Wrap-Up and Retrospectives
    4. Teamwork in Terms of Git
    5. Summary
  7. 2. Command and Control
    1. Project Governance
      1. Copyright and Contributor Agreements
      2. Distribution Licenses
      3. Leadership Models
      4. Code of Conduct
    2. Access Models
      1. Dispersed Contributor Model
      2. Collocated Contributor Repositories Model
      3. Shared Maintenance Model
      4. Custom Access Models
    3. Summary
  8. 3. Branching Strategies
    1. Understanding Branches
    2. Choosing a Convention
    3. Conventions
      1. Mainline Branch Development
      2. Branch-Per-Feature Deployment
      3. State Branching
      4. Scheduled Deployment
    4. Updating Branches
    5. Summary
  9. 4. Workflows That Work
    1. Evolving Workflows
      1. Documenting Your Process
      2. Documenting Encoded Decisions
    2. Ticket Progression
    3. A Basic Workflow
      1. Trusted Developers with Peer Review
      2. Untrusted Developers with QA Gatekeepers
    4. Releasing Software According to Schedule
      1. Publishing a Stable Release
      2. Ongoing Development
      3. Post-Launch Hotfix
    5. Collaborating on Nonsoftware Projects
    6. Summary
  10. II. Applying the Commands to Your Workflow
  11. 5. Teams of One
    1. Issue-Based Version Control
    2. Creating Local Repositories
      1. Cloning an Existing Project
      2. Converting an Existing Project to Git
      3. Initializing an Empty Project
      4. Reviewing History
    3. Working with Branches
      1. Listing Branches
      2. Updating the List of Remote Branches
      3. Using a Different Branch
      4. Creating New Branches
    4. Adding Changes to a Repository
      1. Adding Partial File Changes to a Repository
      2. Committing Partial Changes
      3. Removing a File from the Stage
      4. Writing Extended Commit Messages
      5. Ignoring Files
    5. Working with Tags
    6. Connecting to Remote Repositories
      1. Creating a New Project
      2. Adding a Second Remote Connection
      3. Pushing Your Changes
      4. Branch Maintenance
    7. Command Reference
    8. Summary
  12. 6. Rollbacks, Reverts, Resets, and Rebasing
    1. Best Practices
      1. Describing Your Problem
      2. Using Branches for Experimental Work
    2. Rebasing Step by Step
      1. Begin Rebasing
      2. Mid-Rebase Conflict from a Deleted File
      3. Mid-Rebase Conflict from a Single File Merge Conflict
    3. An Overview of Locating Lost Work
    4. Restoring Files
    5. Working with Commits
      1. Amending Commits
      2. Combining Commits with Reset
      3. Altering Commits with Interactive Rebasing
      4. Unmerging a Branch
    6. Undoing Shared History
      1. Reverting a Previous Commit
      2. Unmerging a Shared Branch
    7. Really Removing History
    8. Command Reference
    9. Summary
  13. 7. Teams of More than One
    1. Setting Up the Project
      1. Creating a New Project
      2. Establishing Permissions
      3. Uploading the Project Repository
      4. Document the Project in a README
    2. Setting Up the Developers
      1. Consumers
      2. Contributors
      3. Maintainers
    3. Participating in Development
      1. Constructing the Perfect Commit
      2. Keeping Branches Up to Date
      3. Reviewing Work
      4. Merging Completed Work
      5. Resolving Merge and Rebase Conflicts
      6. Publishing Work
    4. Sample Workflows
      1. Sprint-Based Workflow
      2. Trusted Developers with No Peer Review
      3. Untrusted Developers with Independent Quality Assurance
    5. Summary
  14. 8. Ready for Review
    1. Types of Reviews
    2. Types of Reviewers
    3. Software for Code Reviews
    4. Reviewing the Issue
    5. Applying the Proposed Changes
      1. Shared Repository Setup
      2. Forked Repository Setup
      3. Checking Out the Proposed Branch
    6. Reviewing the Proposed Changes
    7. Preparing Your Feedback
    8. Submitting Your Evaluation
    9. Completing the Review
    10. Summary
  15. 9. Finding and Fixing Bugs
    1. Using stash to Work on an Emergency Bug Fix
    2. Comparative Studies of Historical Records
    3. Investigating File Ancestry with blame
    4. Historical Reenactment with bisect
    5. Summary
  16. III. Git Hosting
  17. 10. Open Source Projects on GitHub
    1. Getting Started on GitHub
      1. Creating an Account
      2. Creating an Organization
      3. Personal Repositories
    2. Using Public Projects on GitHub
      1. Downloading Repository Snapshots
      2. Working Locally
    3. Contributing to Projects
      1. Tracking Changes with Issues
      2. Forking a Project
      3. Initiating a Pull Request
    4. Running Your Own Project
      1. Creating a Project Repository
      2. Granting Co-Maintainership
      3. Reviewing and Accepting Pull Requests
      4. Pull Requests with Merge Conflicts
    5. Summary
  18. 11. Private Team Work on Bitbucket
    1. Project Governance for Nonpublic Projects
    2. Getting Started
      1. Creating an Account
      2. Creating a Private Project from the Welcome Screen
      3. Creating a Private Project from the Dashboard
      4. Configuring Your New Repository
      5. Exploring Your Project
      6. Editing Files in Your Repository
    3. Project Setup
      1. Project Documentation in Wiki Pages
      2. Tracking Your Changes with Issues
    4. Access Control
      1. Shared Access
      2. Per-Developer Forks
      3. Limiting Access with Protected Branches
    5. Pull Requests
      1. Submitting a Pull Request
      2. Accepting a Pull Request
    6. Extending Bitbucket with Atlassian Connect
    7. Summary
  19. 12. Self-Hosted Collaboration with GitLab
    1. Getting Started
      1. Installing GitLab
      2. Configuring the Administrative Account
      3. Administrative Dashboard
    2. Projects
      1. Creating a Project
    3. User Accounts
      1. Creating User Accounts
      2. Adding People to Projects
    4. Groups
      1. Adding People to Groups
      2. Adding Projects to Groups
    5. Access Control
      1. Project Visibility
      2. Limiting Activities with Project Roles
      3. Limiting Access with Protected Branches
    6. Milestones
    7. Summary
  20. A. Butter Tarts
    1. Austin Butter Tarts
    2. van der Heyden Butter Tarts
  21. B. Installing the Latest Version of Git
    1. Installing Git and Upgrading
    2. Finding the Command Line
      1. OS X
      2. Linux
      3. Windows
    3. Upgrading on *nix Systems
    4. OS X Gotchas
    5. Accessing Git Help at the Command Line
  22. C. Configuring Git
    1. Identifying Yourself
    2. Changing the Commit Message Editor
    3. Adding Color
    4. Customize Your Command Prompt
    5. Ignoring System Files
    6. Line Endings
      1. Fixing Line Endings
  23. D. SSH Keys
    1. Create Your Own SSH Keys
      1. Linux, OS X, and Unix-variants
      2. Windows
    2. Retrieving Your Public SSH Key
  24. Index