These are my reference notes on the excellent video series WordPress and Git by Amelia Briscoe. Many thanks to Amelia for creating this series, sharing it and allowing me to post this summary. This post covers the first four videos. My second post (Part 2) will cover the last five videos.
Links
Contents
- 1. Importing a WordPress Git Repository
- 2. Clone a WordPress Git Repository to a local server
- 3. Configure the WordPress Git Repository
- 4. Installing WordPress from a Git Repository
Video 1. Importing a WordPress Git Repository
Mark Jaquith’s WordPress Skeleton – A basic layout of a WordPress Git repository
Features of WordPress Skeleton
- Latest version of WordPress is in the sub module
wp - All the content (themes, plugins and “must use” plugins) are in the
contentfolder .gitignoretells git to ignore certain files.htaccesslocal-config-sample.phpwp-config.php
Importing WordPress Skeleton into Bitbucket
- Select Import an existing repository in Bitbucket
- Copy the URL of WordPress Skeleton (
https://github.com/markjaquith/WordPress-Skeleton.git) and paste it into the URL for the Old repository on Bitbucket - Enter a name and description for the New repository and click Import repository
Video 2. Clone a WordPress Git Repository to a local server
Forking the repository for local use
- When importing is finished, fork the new Bitbucket repo for use in local environment by clicking the Fork button near the search bar
- On the next page, enter a name (eg.
development-repo) and description for the repo and click Fork - Once the forking is complete, copy the HTTPS URL for the newly forked repo from the top right hand corner of the screen
- Open the git terminal and navigate to the folder that you want clone the repository into (eg.
C:\xampp\htdocs) - Run your own version of the following git command
git clone --recursive https://benpearson@bitbucket.org/benpearson/development-repo.git wp_development
Explanation of the git clone command
recursivetells git to clone the sub modulewpin the WordPress Skeleton as well.https://benpearson@bitbucket.org/benpearson/development-repo.gitis the HTTPS URL of the repo to be cloned.wp_developmentis the name of the folder that will be created for the cloned repo. If this argument is omitted git will give the folder the same name as the repo.
Finish cloning repo and create a database
- Enter Bitbucket password and wait for cloning to complete (takes a couple of minutes)
- Open phpMyAdmin on your local server and create a database and user for the WordPress install.
Video 3. Configure the WordPress Git Repository
Consider the following code from the top of the wp-config.php in the newly cloned local repo.
if ( file_exists( dirname( __FILE__ ) . '/local-config.php' ) ) {
define( 'WP_LOCAL_DEV', true );
include( dirname( __FILE__ ) . '/local-config.php' );
} else {
define( 'WP_LOCAL_DEV', false );
define( 'DB_NAME', '%%DB_NAME%%' );
define( 'DB_USER', '%%DB_USER%%' );
define( 'DB_PASSWORD', '%%DB_PASSWORD%%' );
define( 'DB_HOST', '%%DB_HOST%%' ); // Probably 'localhost'
}
This code looks for the file local-config.php. If it exists, the database information contained in the file in local-config.php is used. If it does not exist, the database information listed below the conditional (above) is used. The file local-config.php will not exist in the repository because it is listed in the .gitignore file.
.gitignore also contains /content/upgrade/ so that any WordPress upgrades made in the local environment will not be pushed to the repo
Setting up the config files
- Create a copy of
local-config-sample.phpand rename itlocal-config.php - Open the new created
local-config.phpand enter the local database name, user name and password. - Open
wp-config.phpand find the Custom Content Directory section. Edit the following line to include your local folder name
define( 'WP_CONTENT_URL', 'http://' . $_SERVER['HTTP_HOST'] . '/content' );
Should be changed to something like following (where wp_development is the name of my local folder)
define( 'WP_CONTENT_URL', 'http://' . $_SERVER['HTTP_HOST'] . '/wp_development/content' );
- It may be necessary to increase the PHP memory limit. This done by adding the following constant definition above the Custom Content Directory section in
wp-config.php
define('WP_MEMORY_LIMIT', '96M');
Video 4. Installing WordPress from a Git Repository
- Running
git statusnow in our repo folder will report thatwp-config.phphas been modified and it is not yet staged - Run
git add .to add everything to the staging area - Run
git commit -m "Changes to the wp-config file" - Open your own version of the URL
localhost/wp_development/wp/wp-adminin a browser. This should open the 5 minute WordPress installation screen. - Complete installation as usual and login
- Go to Settings->General in the WP dashboard and remove the
wpfrom the end of the Site Address (URL). - Update permalinks to your desired structure
- Opening the termial and running
git statusnow will report that.htaccesshas been modified - Run
git add .
You may get the following message if using Windows:
warning: LF will be replaced by CRLF in .htaccess The file will have its orginal line endings in your working directory
In Unix systems the end of a line is represented with a line feed (LF). In windows a line is represented with a carriage return (CR) and a line feed (LF) thus (CRLF). When you get code from git that was uploaded from a unix system they will only have a LF. It’s nothing to worry about. More information on this warning from stackoverflow
- Run
git commit -m "Updated permalinks" - Run
git log --oneline -5to display the information for the last 5 commits, one per line. - Run
git pushto push the changes to your Bitbucket repository.
Thank you so much for making these notes and saving me having to make notes. What a wonderful thing to do – thank you from the bottom of my heart again!
No worries Bis. Thank Amelia Briscoe for creating the free video series. I’m sure she would appreciate it.
Ben,
I just decided to try out Git with WordPress and thought it would be difficult and time consuming to get started. Fortunately I stumbled upon this site and decided to give it a try. I already had a Bitbucket account so I just followed your instructions, step-by-step. I was amazed that everything was clearly explained and the entire procedure went perfectly. (Well, actually it took me a while to find the Fork button on Bitbucket.)
Well done, sir! And thanks for a very useful and clear set of instructions.
Bob
You’re welcome Bob. I’m glad you found this useful. Thanks for the feedback.