My current WordPress project has multiple custom plugins and themes with different repositories. Since I manage 80+ sites, I also end up working on bugs and features on a few different sites throughout the day which means I need to get any updates I’ve made to those custom plugins. Today I’ll show you the command I use to do that from the terminal.
find . -type d -depth 2 -exec git --git-dir={}/.git --work-tree=$PWD/{} pull origin master \;
Let’s walk through the command above so you can understand how to change it to suit your needs.
First find .
searches through the current directory and we set a few options for it. -type d
tells the find
command to only search directories. -depth 2
tells the command to search 2 levels of directories down. I use 2 as the depth because I execute this command from the wp-content
folder which lets me pull any changes to themes or plugins with a single command. -exec
runs a custom command in each directory.
Next, we define the custom command to be run in each directory. git --git-dir={}/.git --work-tree=$PWD/{} pull origin master
matches directories with the .git
folder and then runs pull origin master
on those directories.
A number of our directories have been switched over to the new default main
branch as well so I run the same command a second time replacing master
with main
to make sure I get those repositories.
I still make sure that I have manually run git pull
when I start working on a custom plugin or theme, but this command helps make sure that if I forget I’m not stuck in merge conflict hell.