git-sed - Man Page
replace patterns in git-controlled files
Examples (TL;DR)
- Replace the specified text in the current repository:
git sed 'find_text' 'replace_text'
- Replace the specified text and then commit the resulting changes with a standard commit message:
git sed -c 'find_text' 'replace_text'
- Replace the specified text, using regular expressions:
git sed -f g 'find_text' 'replace_text'
- Replace a specific text in all files under a given directory:
git sed 'find_text' 'replace_text' -- path/to/directory
Synopsis
git-sed [ -c ] [ -f flags ] search replacement [ flags ] [ -- pathspec ]
Description
Run git grep and then send results to sed for replacement with the given flags, if they are provided via -f or as the third argument.
Also runs git commit if -c is provided.
Options
- -c
- commit the resulting changes with a standard commit message detailing the exact command ran. It will fail if there are unstaged changes.
<flags> -f <flags>
will use the given regex flags in the sed command (for example "g" replaces multiple times on the same line).
<search>
the pattern passed to grep and to the first part of the sed expression.
<replacement>
the replacement passed to sed, the second part of the sed expression.
- -- <pathspec>
- limit the paths which will be applied on. Read https://git-scm.com/docs/gitglossary.html#Documentation/gitglossary.txt-aiddefpathspecapathspec for the supported patterns of pathspec.
Examples
$ git sed ´my_function´ ´do_stuff´ # ... only does the changes, without committing $ git commit -m"use proper function name" $ git sed -c ´do_stuff´ ´stuff´ # .. does the changes and a commit $ git sed -f g do_stuff stuff # .. g is actually pretty important, otherwise you will miss some # stuff! $ git sed ´my_method´ ´do_stuff´ -- lake/ # ... only replace ´my_method´ occurs under lake/.
Author
Written by Antoine Beaupré <anarcat@debian.org> from inspiration by https://github.com/da-x/git-search-replace and https://stackoverflow.com/questions/9651898/is-there-a-git-sed-or-equivalent