git: history reclaim/redo/fix

The standard instructions confused me, so here they are simplified with better references to account and repo specific variables.  (taken almost entirely from github instructions)

–Open a terminal

//write down the old email shown in git log
git log

 

–CD into your current repo

//the following will create a temp sub folder containing a packed version of the repo
git clone --bare https://github.com/YOURUSERNAME/THISREPONAME.git
//now cd into the new temp directory
cd THISREPONAME.git

 

–Create this bash script:

#!/bin/sh
#replace the 3 lines for old, correct name , correct email
git filter-branch --env-filter '

OLD_EMAIL="your-old-email@example.com"
CORRECT_NAME="Your Correct Name"
CORRECT_EMAIL="your-correct-email@example.com"

if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
then
export GIT_COMMITTER_NAME="$CORRECT_NAME"
export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
fi
if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]
then
export GIT_AUTHOR_NAME="$CORRECT_NAME"
export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
fi
' --tag-name-filter cat -- --branches --tags

 

–Execute the bash script in the new temp folder

–Replace entire remote with entire local

git push --force --tags origin 'refs/heads/*'

 

–Delete the temp folder

cd .. //(into main folder)
rm -rf THISREPONAME.git

vim: all you need to…reference

Choosing to go into Vim is a complicated thought process. From the terminal, you’ll need these two commands:

 vimtutor //pretend you are going to learn to use Vim
 vim //with optional filename to to open

___

Once you’re in Vim, most likely because $>git commit put/trapped you there without you wanting to go. Use these:

  i   //enter insert mode, now write code
  esc //exit insert mode
  :wq //writefile and quit