git for wordpress developers

28
.Git Wah? Everyting you wanted to know about .Git but were afraid to ask?

Upload: mpvanwinkle

Post on 22-Apr-2015

4.722 views

Category:

Technology


2 download

DESCRIPTION

Presentation given at WordCamp Denver on 10-13-2012

TRANSCRIPT

Page 1: Git for WordPress Developers

.Git Wah?Everyting you wanted to know about .Git but were

afraid to ask?

Page 2: Git for WordPress Developers

Mike Van Winkle

• Developer @ WP Engine

• Freelance WordPress Developer for 3 years

• Second career

• Santa Rosa, CA

Page 3: Git for WordPress Developers

Utopia

• I write perfect code.

• I upload perfect code to website.

• Nobody touches my perfect code without asking me first.

• Rinse and Repeat.

Page 4: Git for WordPress Developers

Reality

• Other developers on a project

• I do stupid things

• Clients sometimes think they can code

• Shit happens

Page 5: Git for WordPress Developers

Version Control

• The Problem: How do we maintain stability and continuity in our websites/applications?

• The Answer: We save versions.

Page 6: Git for WordPress Developers

Realistic Workflow

http://nvie.com/posts/a-successful-git-branching-model/

Page 7: Git for WordPress Developers

Realistic Workflow

http://nvie.com/posts/a-successful-git-branching-model/

Page 8: Git for WordPress Developers

Version Control

• As much about transitioning a website between states as it is recording changes.

• Deployment is quicker and safer.

• Changes can be easily “rolled” back.

• A google example

Page 9: Git for WordPress Developers

Subversion or .Git

• SVN solves the problem by saving a “revision” with each change committed. Developers then can update code to a specific #

• Git Solves the problem by tracking the differences between commits

Page 10: Git for WordPress Developers

Subversion or .Git

• .Git is a “distributed” model with less server overhead and better performance

• .Git makes complex workflows much easier to manage

• Github.com is a great community of projects and developers sharing code.

• Little functions that make life easy (examples later)

Page 11: Git for WordPress Developers

Getting Started:What you need

• A command line tool like iTerm or Putty

• RSA Key Pair: https://help.github.com/articles/generating-ssh-keys

• Some Code

Page 12: Git for WordPress Developers

Getting Started: Set up a repo

Page 13: Git for WordPress Developers

Getting Started: Set up a repo

Page 14: Git for WordPress Developers

Getting Started:Then What?

$ git init

[create a .gitignore file ... touch .gitignore ]

$ git add . --all OR $ git add wp-content

$ git add remote origin [email protected]:mikevanwinkle/My-WP-Site.git

git commit -am “initial commit”

git push origin master

Page 15: Git for WordPress Developers

What to ignore?• Large Files

• Local Files

• custom .htaccess files

• custom wp-config.php

• WP Core

• Folders containing .svn info

• Historic Files

Page 16: Git for WordPress Developers

What to ignore?*~.svn.cvs.git.listing*.bak*.swp

cache.cachetemptmp*.tmpimagecache*uploads**_backupwp-config-sample.phpwp-content/w3tc*

wp-content/w3-*

wp-content/upgrade/*wp-content/uploadswp-content/blogs.dir/*/*pclzip-*log.txtdebug.loggallery/*

wp-content/gallery/*wp-content/album/*wp-content/plugins/plugins

.htaccess ? wp-config.php ?

Page 17: Git for WordPress Developers

Deployment

On your webhost, you’ll need ssh access or you will need a tool that can deploy via FTP ( Beanstalk ? )

$ git clone [email protected]:mikevanwinkle/My-WP-Site.git

$ git pull origin master

Page 18: Git for WordPress Developers

Development: Example[on your local]

$ git branch dev

$ git checkout dev

[make some changes]

$ git commit -am “Making my dev changes”

$ git push origin dev [pushes the new branch up]

[on production site]

$ git pull origin dev

$ git checkout dev

Page 19: Git for WordPress Developers

Development: Example[on your local]

$ git branch feature-1

$ git checkout feature-1

[make some changes]

$ git commit -am “Making my dev changes”

$ git push origin feature-1 [pushes the new branch up]

$ git checkout master

$ git merge feature-1

$ git commit -am “merge feature-1 with master”

$ git push origin master

Page 20: Git for WordPress Developers

Realistic Workflow

Page 21: Git for WordPress Developers

Realistic Workflow

Page 22: Git for WordPress Developers

Cool Stuff: Hooks• applypatch-msg

• post-commit

• post-update

• pre-commit

• update

• commit-msg

• post-receive

• pre-applypatch

• pre-rebase

Page 23: Git for WordPress Developers

Cool Stuff: Stash• applypatch-msg

• post-commit

• post-update

• pre-commit

• update

• commit-msg

• post-receive

• pre-applypatch

• pre-rebase

Page 24: Git for WordPress Developers

Cool Stuff: Stash

$ git stash save “Temp 2”

$ git stash list

$ git stash apply <STASH ID>

http://git-scm.com/book/en/Git-Tools-Stashing

Page 25: Git for WordPress Developers

Cool Stuff: Reset

$ git reset --hard HEAD

Page 26: Git for WordPress Developers

Cool Stuff: Reset

$ git reset --hard HEAD

Page 27: Git for WordPress Developers

Cool Stuff: Archive

$ git archive HEAD | gzip > /tmp/website.tar.gz