git-scp - Copy files to SSH compatible git-remote
Contents
Description
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.
Examples
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;
Git Configs
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
Name
git-scp - Copy files to SSH compatible git-remote
Options
<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).
Reporting Bugs
<https://github.com/chernjie/git-extras/issues>
See Also
<https://github.com/tj/git-extras>
October 2024 GIT-SCP(1)
Synopsis
`git scp` -h|help|?
`git scp` <remote> [<commits>...|<path>...]
`git rscp` <remote> <path>
