git-scp
- Copy files to SSH compatible git-remote
`git scp` -h|help|?
`git scp` <remote> [<commits>...|<path>...]
`git rscp` <remote> <path>
A convenient way to copy files from the current working tree to the working directory of a remote repository. If a <commits>...
is provided, only files that has changed within the commit range will be copied.
Internally this script uses rsync
and not scp
as the name suggests.
git-rscp
- The reverse of git-scp
. Copies specific files from the working directory of a remote repository to the current working directory.
<remote>
The git remote where you want to copy your files.
<commits>...
Any commit, commit range or tree. Uses `git-diff`(1)
<path>...
The <paths> parameters, when given, are used to limit the diff to the named paths (you can give directory names and get diff for all files under them).
To sanitize files using dos2unix
before copying files
$ git config --global --add extras.scp.sanitize dos2unix
You can run the files through PHP lint (i.e. php -l
) before copying files
$ git config --global --add extras.scp.sanitize php_lint
Make sure you have git-remote
(1) setup
$ git remote add staging myStagingServer:/var/www/html
Copy unstaged files to remote. Useful when you want to make quick test without making any commits
$ git scp staging
Copy staged and unstaged files to remote
$ git scp staging HEAD
Copy files that has been changed in the last commit, plus any staged or unstaged files to remote
$ git scp staging HEAD~1
Copy files that has been changed between now and a tag
$ git scp staging v1.2.3
Copy specific files
$ git scp staging index.html .gitignore .htaccess
Copy specific directory
$ git scp staging js/vendor/
Copy files from specific directory to multiple servers
$ for dest in web1 web2 web3; do
git diff --name-only 4.8.3 4.8.2 app/code/community app/design skin/ | xargs git scp $dest
done;
Written by Chern Jie <lim@chernjie.com>
<https://github.com/chernjie/git-extras/issues>
<https://github.com/tj/git-extras>