Swapping two files in git
I found myself wanting to swap the names of two files in my Git
repository, and couldn't find an easy way to do it with the git
command. So I extended it. Now I just type git swap file1 file2
to
rename the two files to each other.
How to do it
I wrote a simple shell script to automate the renaming, and saved it in
a file called git-swap
in my PATH
. Here's the script (also available
on GitHub):
#!/bin/sh
TEMP="/tmp/$(basename $0).$$.tmp"
cp $1 $TEMP
git mv -f $2 $1
mv $TEMP $2
git add $2
To use it, just type:
$ git swap file1 file2
warning: destination exists; will overwrite!
Don't worry about the warning; that's just git mv -f
letting us know
that we're writing one file over the top of another one.
If you check the status you should see that your files have been swapped, and all you need to do is commit:
$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# renamed: file1 -> file2
# renamed: file2 -> file1
You can also find the git-swap
script on GitHub.