Git commands for grunt.
This plugin requires Grunt ~0.4.0
If you haven't used Grunt before, be sure to check out the Getting Started guide, as it explains how to create a Gruntfile as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:
npm install grunt-git --save-dev
One the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:
grunt.loadNpmTasks('grunt-git');
Commits the working directory.
In your project's Gruntfile, add a section named gitcommit
to the data object passed into grunt.initConfig()
.
grunt.initConfig({
gitcommit: {
your_target: {
options: {
// Target-specific options go here.
},
files: {
// Specify the files you want to commit
}
}
},
})
Each target defines a specific git task that can be run. The different available tasks are listed below.
Type: String
Default value: 'Commit'
The commit message.
Type: Boolean
Default value: false
When true
, the task will not fail when there are no staged changes (optional).
Commit options:
message
: Commit messagefiles
: Files to commit
grunt.initConfig({
gitcommit: {
task: {
options: {
message: 'Testing'
},
files: {
src: ['test.txt']
}
}
},
});
Rebases the current branch onto another branch
Type: String
the name of the branch you want to rebase on to. For example if the current branch were codfish
and you wanted to rebase it onto master
, you would set this value to master
.
Type: Boolean
Default value: false
When true, use the git equivalent of svn's theirs-conflict
(--strategy=recursive -Xtheirs
).
grunt.initConfig({
gitrebase: {
task: {
options: {
branch: 'master'
}
}
},
});
Creates a git tag.
In your project's Gruntfile, add a section named gittag
to the data object passed into grunt.initConfig()
.
grunt.initConfig({
gittag: {
your_target: {
options: {
// Target-specific options go here.
}
}
},
})
Each target defines a specific git task that can be run. The different available tasks are listed below.
Type: String
Default value: ''
The name of the tag. E.g.: 0.0.1
.
Type: String
Default value: ''
The tag message (optional).
grunt.initConfig({
gittag: {
task: {
options: {
tag: '0.0.1',
message: 'Testing'
}
}
},
});
Creates a git branch using checkout -b, or checks out a given branch.
In your project's Gruntfile, add a section named gitcheckout
to the data object passed into grunt.initConfig()
.
grunt.initConfig({
gitcheckout: {
your_target: {
options: {
// Target-specific options go here.
}
}
},
})
Each target defines a specific git task that can be run. The different available tasks are listed below.
Type: String
Default value: ''
The name of the branch. E.g.: testing
.
Type: Boolean
Default value: false
Whether the branch should be created (optional).
grunt.initConfig({
gitcheckout: {
task: {
options: {
branch: 'testing',
create: true
}
}
},
});
Stash the changes in a dirty working directory away.
In your project's Gruntfile, add a section named gitstash
to the data object passed into grunt.initConfig()
.
grunt.initConfig({
gitstash: {
your_target: {
options: {
// Target-specific options go here.
}
}
},
})
Each target defines a specific git task that can be run. The different available tasks are listed below.
Type: String
Default value: 'save'
The stash command to run. E.g.: save
, apply
.
Type: Integer
Default value: ''
The stash to apply. E.g.: 0
(optional).
Type: Boolean
Default value: false
Whether the staged changes should be reapplied (optional).
grunt.initConfig({
gittag: {
stash: {
options: {
create: true
}
},
apply: {
options: {
command: 'apply',
staged: true,
stash: '0'
}
}
},
});
Clones a git repo.
In your project's Gruntfile, add a section named gitclone
to the data object passed into grunt.initConfig()
.
grunt.initConfig({
gitclone: {
your_target: {
options: {
// Target-specific options go here.
}
}
},
})
Each target defines a specific git task that can be run. The different available tasks are listed below.
Type: Boolean
Default value: none
Run git clone with the --bare
option applied.
Type: String
Default value: none
Clone the repo with a specific branch checked out. (Cannot be used in conjunction with 'bare')
Type: String
Default value: none
The path to the repository you want to clone.
Type: String
Default value: none
Clone the repo into a specific directory instead of the one git decides.
grunt.initConfig({
gitclone: {
clone: {
options: {
repository: 'https://github.com/you/your-git-repo.git',
branch: 'my-branch',
directory: 'repo'
}
}
},
});
Creates a git branch using checkout -b, or checks out a given branch.
In your project's Gruntfile, add a section named gitreset
to the data object passed into grunt.initConfig()
.
grunt.initConfig({
gitreset: {
your_target: {
options: {
// Target-specific options go here.
},
files: {
src: // Target-specific files go here.
}
}
},
})
Each target defines a specific git task that can be run. The different available tasks are listed below.
Type: String
Default value: ''
The reset mode to run. E.g.: hard
, merge
.
Type: String
Default value: 'HEAD'
Which commit to reset to (optional).
grunt.initConfig({
gitreset: {
task: {
options: {
mode: 'hard',
commit: 'HEAD~1'
}
}
},
});
Remove untracked files from the working tree.
In your project's Gruntfile, add a section named gitclean
to the data object passed into grunt.initConfig()
.
grunt.initConfig({
gitclean: {
your_target: {
options: {
// Target-specific options go here.
},
files: {
src: // Target-specific paths go here (optional).
}
}
},
})
Type: Boolean
Default value: true
Force a run of the clean command (optional).
Type: Boolean
Default value: false
Don't actually remove anything, just show what would be done (optional).
Type: Boolean
Default value: false
Be quiet, only report errors, but not the files that are successfully removed (optional).
Type: String
Default value: false
In addition to those found in .gitignore (per directory) and $GIT_DIR/info/exclude, also consider the given patterns to be in the set of the ignore rules in effect (optional).
Type: Boolean
Default value: false
Remove only files ignored by Git. This may be useful to rebuild everything from scratch, but keep manually created files (optional).
Type: Boolean
Default value: false
Don't use the standard ignore rules read from .gitignore (per directory) and $GIT_DIR/info/exclude, but do still use the ignore rules given with this option. This allows removing all untracked files, including build products. This can be used (possibly in conjunction with git reset) to create a pristine working directory to test a clean build (optional).
Type: Boolean
Default value: false
Remove untracked directories in addition to untracked files. If an untracked directory is managed by a different Git repository, it is not removed by default (optional).
Pushes to a remote.
In your project's Gruntfile, add a section named gitcommit
to the data object passed into grunt.initConfig()
.
grunt.initConfig({
gitpush: {
your_target: {
options: {
// Target-specific options go here.
}
},
})
Type: String
Default value: 'origin'
The remote where to push. E.g.: origin
, heroku
. The task will push to origin
if left unset.
Type: String
Default value: null
The remote branch to push to. E.g.: master
, develop
. The task will push to the tracked branch if left unset.
Type: Boolean
Default value: false
Will add the --all
flag to the push.
Type: Boolean
Default value: false
Will add the --tags
flag to the push.
Type: Boolean
Default value: false
Will add the --set-upstream
flag to the push.
Merges another branch into the current branch.
In your project's Gruntfile, add a section named gitmerge
to the data object passed into grunt.initConfig()
.
grunt.initConfig({
gitmerge: {
your_target: {
options: {
// Target-specific options go here.
}
},
})
Type: String
Default value: null
The branch to merge from. E.g.: master
, develop
. The task will fail if the branch if left unset.
Type: Boolean
Default value: false
Will add the --ff-only
flag to the merge.
Type: Boolean
Default value: false
Will add the --squash
flag to the merge.
Archives a branch.
In your project's Gruntfile, add a section named gitarchive
to the data object passed into grunt.initConfig()
.
grunt.initConfig({
gitarchive: {
master: {
options: {
format: 'tar.gz',
prefix: 'your-project-name/',
treeIsh: 'master',
output: '/tmp/your-project-name.tar.gz'
}
}
}
})
Type: String
Default value: 'master'
.
The tree or commit to produce an archive for. E.g.: 'master'
or a commit hash.
Type: String
Default value: 'tar'
.
Format of the resulting archive: 'tar'
, 'tar.gz'
, 'zip'
. If this option is not given, and the output file is specified, the format is inferred from the filename if possible (e.g. writing to "foo.zip" makes the output to be in the zip format). Otherwise the output format is tar.
Type: String
Default value: none.
Adds the --prefix
flag. Don't forget the trailing /
.
Type: String
Default value: none.
Adds the --output
flag. Write the archive to a file instead of stdout
.
Type: String
Default value: none.
Adds the --remote
flag. Instead of making a tar archive from the local repository, retrieve a tar archive from a remote repository.
Type: String
Default value: none.
Without an optional path
parameter, all files and subdirectories of the current working directory are included in the archive. If one or more paths are specified, only these are included.
In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using Grunt.