question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Amend co-authors on a commit?

See original GitHub issue

Should we make an easy amend feature if a user realises they have committed the wrong or forgotten to add co-authors?

Perhaps something like: git mob rk di --amend - this will replace co-authors in the commit?

Issue Analytics

  • State:open
  • Created 5 years ago
  • Comments:6 (6 by maintainers)

github_iconTop GitHub Comments

1reaction
jonsmitherscommented, Nov 9, 2021

I started working on a prepare-commit-msg hook written in bash. (My team already relies on a bash prepare-commit-msg hook to insert a ticket number, so we need to combine two hooks into one)

Unlike the sample in node, this implementation only inserts co-authors that are not already present. You can amend a commit with a new set-of co-authors, and it will selectively append the new co-authors after the old co-authors. Tested only on macOS:

# https://github.com/findmypast-oss/git-mob/issues/17#issuecomment-754133882
append_git_mob_co_authors() {
  local commit_file="$1"
  if [[ "$commit_file" =~ "COMMIT_EDITMSG" ]]; then
    local commit_author current_author co_authors missing_co_authors git_message git_comments
    commit_author=$(git var GIT_AUTHOR_IDENT | grep -o '^.*>')
    current_author="$(git config user.name) <$(git config user.email)>"
    co_authors=$(git mob-print | grep '^Co-authored-by')
    if [[ "$commit_author" != "$current_author" ]]; then
      co_authors=$(echo "$co_authors"; echo "Co-authored-by: $current_author")
    fi

    commit_file_contents=$(cat "$commit_file")
    missing_co_authors="$(comm -1 -3 <(echo "$commit_file_contents" | sort -u) <(echo "$co_authors" | sort -u))"
    if [[ -n "$missing_co_authors" ]]; then
      git_message=$(echo "$commit_file_contents" | sed '/^#/,$d')
      git_comments=$(echo "$commit_file_contents" | sed -n '/^#/,$p')
      echo "$git_message" > "$commit_file"

      if ! echo "$git_message" | tail -n 1 | grep --quiet '^Co-authored-by'; then
        echo -en "\n" >> "$commit_file"
      fi
      echo "${missing_co_authors}" >> "$commit_file"
      echo "$git_comments" >> "$commit_file"
    else
      echo "git-mob co-author is already present"
    fi
  fi
}

append_git_mob_co_authors "$1" "$2"

(updated 2021-01-14 to fix a lil bug) (updated 2021-05-28 to fix a big bug when using git commit --verbose, and to skip altogether when rebasing or using commit --message) (updated 2021-10-15 to append the current user as a coauthor when they are amending a commit by a different author) (updated 2021-11-09 to undo part of 2021-05-28 update. Do not skip when using commit --message)

1reaction
rkotzecommented, May 14, 2018

I followed those git commands to amend co-authors. Unfortunately did not work.

The co-authors did not get appended to the end. I had to copy pasta it into the message. Maybe the template does not apply on amend?

I agree we should not have this in git mob but I think it will be worked documented here how to amend a commit to add co-authors. I can see it being an issue which should have an easy to find solution.

Read more comments on GitHub >

github_iconTop Results From Across the Web

How do I add a co-author to latest pushed git commit?
I need to add a co-author to my last commit and I tried using git commit --amend --author="name <name@email.com>" but change --author to ......
Read more >
Creating a commit with multiple authors - GitHub Docs
Creating co-authored commits on the command line · Collect the name and email address for each co-author. · Type your commit message and...
Read more >
Rewrite git commit messages and authors - Failure Driven
So we are basically we have: swapped the Author with the Co-author; anonimized the Author email. Note this will change the SHA of...
Read more >
How to add multiple authors to a commit in Github - Git Better
Github supports to add multiple authors to a single commit. This feature is helpful when developers do pair programming.
Read more >
Improve support for Co-authors - GitKraken User Suggestions
GitHub has support for special annotations in commit messages to give credit to other co-authors who worked on the commit (see ...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found