Never Print Magazines


    2.0.0 • Public • Published

    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


    npm i git-mob

    DownloadsWeekly Downloads






    Unpacked Size

    37.4 kB

    Total Files


    Last publish


    • dideler
    • kotze
    • findmypast-tech