# ----------------------------------------------------------------- | |
# .gitignore for WordPress | |
# Bare Minimum Git | |
# http://ironco.de/bare-minimum-git/ | |
# ver 20150227 | |
# | |
# This file is tailored for a WordPress project | |
# using the default directory structure | |
# | |
# This file specifies intentionally untracked files to ignore | |
# http://git-scm.com/docs/gitignore | |
# | |
# NOTES: | |
# The purpose of gitignore files is to ensure that certain files not | |
# tracked by Git remain untracked. | |
# | |
# To ignore uncommitted changes in a file that is already tracked, | |
# use `git update-index --assume-unchanged`. | |
# | |
# To stop tracking a file that is currently tracked, | |
# use `git rm --cached` | |
# | |
# Change Log: | |
# 20150227 Ignore hello.php plugin. props @damienfa | |
# 20150227 Change theme ignore to wildcard twenty*. props @Z33 | |
# 20140606 Add .editorconfig as a tracked file | |
# 20140404 Ignore database, compiled, and packaged files | |
# 20140404 Header Information Updated | |
# 20140402 Initially Published | |
# | |
# ----------------------------------------------------------------- | |
# ignore everything in the root except the "wp-content" directory. | |
/* | |
!wp-content/ | |
# ignore all files starting with . | |
.* | |
# track this file .gitignore (i.e. do NOT ignore it) | |
!.gitignore | |
# track .editorconfig file (i.e. do NOT ignore it) | |
!.editorconfig | |
# track readme.md in the root (i.e. do NOT ignore it) | |
!readme.md | |
# ignore all files that start with ~ | |
~* | |
# ignore OS generated files | |
ehthumbs.db | |
Thumbs.db | |
# ignore Editor files | |
*.sublime-project | |
*.sublime-workspace | |
*.komodoproject | |
# ignore log files and databases | |
*.log | |
*.sql | |
*.sqlite | |
# ignore compiled files | |
*.com | |
*.class | |
*.dll | |
*.exe | |
*.o | |
*.so | |
# ignore packaged files | |
*.7z | |
*.dmg | |
*.gz | |
*.iso | |
*.jar | |
*.rar | |
*.tar | |
*.zip | |
# ignore everything in the "wp-content" directory, except: | |
# "mu-plugins" directory | |
# "plugins" directory | |
# "themes" directory | |
wp-content/* | |
!wp-content/mu-plugins/ | |
!wp-content/plugins/ | |
!wp-content/themes/ | |
# ignore these plugins | |
wp-content/plugins/hello.php | |
# ignore specific themes | |
wp-content/themes/twenty*/ | |
# ignore node/grunt dependency directories | |
node_modules/ |
This comment has been minimized.
This comment has been minimized.
I use wp-content/themes/twenty* to ignore all default themes. |
This comment has been minimized.
This comment has been minimized.
I'm now using this WordPress .gitignore file instead. I prefer how the other version excludes plugins and themes by default. |
This comment has been minimized.
This comment has been minimized.
I'm thinking these should be ignored as well: for example, when I pulled a repo and then rsync'd a fresh empty wp install over it, it's now asking for a commit just because my fresh files didn't have "?>" at the ends of the files. |
This comment has been minimized.
This comment has been minimized.
Thanks for this, You should also track the composer.lock file so your you don't end up with different package versions across developers. |
This comment has been minimized.
This comment has been minimized.
Here is quick update for those who are on OSX and/or using IntelliJ |
This comment has been minimized.
This comment has been minimized.
Probably should include:
|
This comment has been minimized.
This comment has been minimized.
Thanks for the file. Why ignore plugins though? |
This comment has been minimized.
This comment has been minimized.
I like the idea of ignoring the plugins in order to conserve repo size. I'd think ideally, all plugins (custom or third party) should be contained as an object in a discrete repo. Utilities like Composer or even a good old Readme file should allow one to find and install the required plugins to run the WP site/app. |
This comment has been minimized.
This comment has been minimized.
Good list, but I feel you should also add:
|
This comment has been minimized.
This comment has been minimized.
@mvhoute, no need to exclude these implicitly, they are automatically excluded by excluding . files on line #38. |
This comment has been minimized.
This comment has been minimized.
I like this idea but quick question. Do I need to event push entire WordPress copy first time or not? |
This comment has been minimized.
This comment has been minimized.
@chrisgeary92 Thanks for your input, I go back and forth on this idea. For 99% of the project on which I work, we update the plugins from within WordPress. When doing development, I pull the repo, run composer, and then update the plugin if necessary. For the other 1% of projects, I do add |
This comment has been minimized.
This comment has been minimized.
@ajmerainfo With the backwards compatibility of WordPress, I see this as a rare problem and if it were to occur I'd have to deal with it manually. I know some prefer to keep WordPress core as a composer dependency, which I believe would address your concern. |
This comment has been minimized.
This comment has been minimized.
As I mentioned above, I'm now using this WordPress .gitignore file instead, which ignores everything by default and allows me to whitelist only those plugins and themes I want to version control. Of course, use whatever works best for you. |
This comment has been minimized.
This comment has been minimized.
Is it better to just create a repository from your theme only and not the whole Wordpress files? |
This comment has been minimized.
This comment has been minimized.
@junibrosas I would say it depends on what you're building. When I'm doing a site for client, which is what I'm doing most of the time, I create the repo from the root of the website. If I'm specifically just building a theme, not an entire site, then I create the repo for just the theme folder. Some people prefer to have one project repo (for the entire project) and use a separate repo within the project repo for the theme. For me, I find this adds a lot of complexity and very little benefit, so I do not do this. |
This comment has been minimized.
This comment has been minimized.
@salcode +1 |
This comment has been minimized.
This comment has been minimized.
Very helpful @salcode. Thanks so much for sharing. |
This comment has been minimized.
This comment has been minimized.
@salcode Thanks for sharing! |
This comment has been minimized.
This comment has been minimized.
Thanks! You should add .idea for phpstorm project files also. |
This comment has been minimized.
This comment has been minimized.
A good thought but this folder is already excluded due to
As a side note, I'm now using this other WordPress .gitignore file, which excludes everything by default, allowing me to whitelist only those plugins and/or themes I want to include. |
This comment has been minimized.
This comment has been minimized.
maybe you could add:
|
This comment has been minimized.
This comment has been minimized.
Thanks for the note. If If you're not seeing that behavior (or if you have a use-case for Thanks. |
This comment has been minimized.
This comment has been minimized.
How do you clone a project with this project structure? |
This comment has been minimized.
This comment has been minimized.
Hello, I'm now using this gitignore for development. My question is on the plugins management: It's very useful to have plugins tracked across environments and this gitignore tracks them unless you ignore specific plugins (like hello.php ecc..) which is fine. The problem is when the plugins have been updated. The files will sync because they are tracked in the GIT repo, which is ok. But what if the updated version of the plugin needs a DB update/upgrade, too? If so, you must always deactivate and activate again all the updated and pulled plugins to ensure eventual tables of the plugins are synced, too. Do you have a solution for this problem or it is better to not track the plugins at all and install them manually on each environment which is a little bit frustrating to me? Thanks |
This comment has been minimized.
This comment has been minimized.
Thank you |
This comment has been minimized.
This comment has been minimized.
Thanks a lot. It worked fine! |
This comment has been minimized.
You should add :