LinuxCommandLibrary

git-sed

Replace patterns in git-controlled files using sed.

TLDR

Replace the specified text in the current repository

$ git sed '[find_text]' '[replace_text]'
copy


Replace the specified text and then commit the resulting changes with a standard commit message
$ git sed -c '[find_text]' '[replace_text]'
copy


Replace the specified text, using regular expressions
$ git sed -f g '[find_text]' '[replace_text]'
copy


Replace a specific text in all files under a given directory
$ git sed '[find_text]' '[replace_text]' -- [path/to/directory]
copy

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/.

REPORTING BUGS

<https://github.com/tj/git-extras/issues>

SEE ALSO

<https://github.com/tj/git-extras>

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

Copied to clipboard