Skip to content
Go to file

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Git Mob npm downloads npm version build status

A command-line tool for social coding

Includes co-authors in commits when you collaborate on code. Use when pairing with a buddy or mobbing with your team.

Read our blog post to find out why git-mob exists: Co-author commits with Git Mob

New Git Mob VS Code extension

gif showing example usage of git-mob

  1. Install
  2. Using git commit -m
  3. Workflow / Usage
  4. More commands
    1. List all co-authors
    2. Overwrite the main author
    3. Add co-author
    4. Delete co-author
    5. Edit co-author
    6. Add initials of current mob to PS1, in bash and fish


git-mob is a CLI tool, so you'll need to install the package globally.

npm i -g git-mob

By default git-mob will use the .gitmessage template to append co-authors.

Using git commit -m setup

How to append co-authors to the message when using message flag - git commit -m "commit message"?

  1. Add prepare-commit-msg hook file in .git/hooks dir. See hook-examples
  2. The hook will need to be executable chmod +x prepare-commit-msg

prepare-commit-msg will need a script to read the co-authors, which can be done via git mob-print. See hook-examples folder for working scripts.

The command git mob-print will output to stdout the formatted co-authors.

Note: > v1.1.0 git mob --installTemplate and git mob --uninstallTemplate has been removed.

Revert back to default setup

  1. Remove relevant scripts prepare-commit-msg file

Workflow / Usage

With git-mob, the primary author will always be the primary user of the computer. Set your author info in git if you haven't done so before.

$ git config --global "Jane Doe"
$ git config --global ""

To keep track of potential co-authors, git-mob uses a JSON file called ~/.git-coauthors. Here's a template of its structure.

  "coauthors": {
    "<initials>": {
      "name": "<name>",
      "email": "<email>"

Start by adding a few co-authors that you work with.

$ cat <<-EOF > ~/.git-coauthors
  "coauthors": {
    "ad": {
      "name": "Amy Doe",
      "email": ""
    "bd": {
      "name": "Bob Doe",
      "email": ""

You're ready to create your mob. Tell git-mob you're pairing with Amy by using her initials.

$ git mob ad
Jane Doe <>
Amy Doe <>

Commit like you normally would. You should see Co-authored-by: Amy Doe <> appear at the end of the commit message.

Let's add Bob to the group to create a three-person mob.

$ git mob ad bd
Jane Doe <>
Amy Doe <>
Bob Doe <>

Once you're done mobbing, switch back to developing solo.*

$ git solo
Jane Doe <>

More commands

List all co-authors

Check which co-authors you have available in your .git-coauthors file.

$ git mob --list
jd Jane Doe
ad Amy Doe
bd Bob Doe

Overwrite the main author

Overwrite the current author which could be useful for pairing on different machines

If the current author is: Bob Doe

$ git mob -o jd ad
jd Jane Doe
ad Amy Doe

Now the author has changed to Jane Doe.

Add co-author

Add a new co-author to your .git-coauthors file.

$ git add-coauthor bb "Barry Butterworth"

Delete co-author

Delete a co-author from your .git-coauthors file.

$ git delete-coauthor bb

Edit co-author

Edit a co-author's details in your .git-coauthors file.

$ git edit-coauthor bb --name="Barry Butterworth" --email=""
$ git edit-coauthor bb --name="Barry Butterworth"
$ git edit-coauthor bb --email=""

Suggest co-authors base on current repo

Suggest some co-authors to add based on existing committers to your current repo

$ git suggest-coauthors

Add initials of current mob to your prompt


Add the initials to PS1, in ~/.bashrc

function git_initials {
  local initials=$(git mob-print --initials)
  if [[ -n "${initials}" ]]; then
    echo " [${initials}]"

export PS1="\$(pwd)\$(git_initials) -> "


Add the following functions to .config/fish/

function git_initials --description 'Print the initials for who I am currently pairing with'
  set -lx initials (git mob-print --initials)
  if test -n "$initials"
    printf ' [%s]' $initials

function fish_prompt
  printf "%s%s ->" (pwd) (git_initials)

* If you have git-duet installed, you'll need to uninstall it since it conflicts with the git-solo command.

Find out more with git mob -h