{"id":14982098,"url":"https://github.com/stephenlacy/gulp-git","last_synced_at":"2026-04-01T22:04:08.676Z","repository":{"id":12978940,"uuid":"15657634","full_name":"stephenlacy/gulp-git","owner":"stephenlacy","description":"Git plugin for gulp (gulpjs.com)","archived":false,"fork":false,"pushed_at":"2024-07-24T16:28:51.000Z","size":335,"stargazers_count":400,"open_issues_count":1,"forks_count":86,"subscribers_count":8,"default_branch":"master","last_synced_at":"2026-03-08T07:53:40.076Z","etag":null,"topics":["git","gulp"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/stephenlacy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2014-01-05T19:50:40.000Z","updated_at":"2026-01-22T16:34:21.000Z","dependencies_parsed_at":"2024-06-18T12:16:11.056Z","dependency_job_id":"0dc5334b-b1aa-4d22-a4a4-a7cb1a2ec9ee","html_url":"https://github.com/stephenlacy/gulp-git","commit_stats":{"total_commits":327,"total_committers":51,"mean_commits":6.411764705882353,"dds":"0.41590214067278286","last_synced_commit":"47cfbb4927540dc6311cd10c36415f0666af6f26"},"previous_names":["stevelacy/gulp-git"],"tags_count":40,"template":false,"template_full_name":null,"purl":"pkg:github/stephenlacy/gulp-git","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stephenlacy%2Fgulp-git","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stephenlacy%2Fgulp-git/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stephenlacy%2Fgulp-git/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stephenlacy%2Fgulp-git/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stephenlacy","download_url":"https://codeload.github.com/stephenlacy/gulp-git/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stephenlacy%2Fgulp-git/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30429980,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-12T14:34:45.044Z","status":"ssl_error","status_checked_at":"2026-03-12T14:09:33.793Z","response_time":114,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["git","gulp"],"created_at":"2024-09-24T14:04:47.296Z","updated_at":"2026-04-01T22:04:08.647Z","avatar_url":"https://github.com/stephenlacy.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# gulp-git\n\n[![Build Status](https://travis-ci.org/stevelacy/gulp-git.png?branch=master)](https://travis-ci.org/stevelacy/gulp-git)\n[![NPM version](https://badge.fury.io/js/gulp-git.png)](http://badge.fury.io/js/gulp-git)\n\n\u003ctable\u003e\n\u003ctr\u003e\n\u003ctd\u003ePackage\u003c/td\u003e\u003ctd\u003egulp-git\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eDescription\u003c/td\u003e\n\u003ctd\u003eGit plugin for gulp (gulpjs.com)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eNode Version\u003c/td\u003e\n\u003ctd\u003e\u003e= 0.9\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eGulp Version\u003c/td\u003e\n\u003ctd\u003e3.x\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\n## Usage\n### Install\n    npm install gulp-git --save\n\n#### 0.4.0 introduced Breaking Changes!\nGit actions which did not require a [Vinyl](https://github.com/wearefractal/vinyl) file were refactored.\nPlease review the following docs for changes:\n##Example\n\n```javascript\nvar gulp = require('gulp');\nvar git = require('gulp-git');\n\n// Run git init\n// src is the root folder for git to initialize\ngulp.task('init', function(){\n  git.init(function (err) {\n    if (err) throw err;\n  });\n});\n\n// Run git init with options\ngulp.task('init', function(){\n  git.init({args: '--quiet --bare'}, function (err) {\n    if (err) throw err;\n  });\n});\n\n// Run git add\n// src is the file(s) to add (or ./*)\ngulp.task('add', function(){\n  return gulp.src('./git-test/*')\n    .pipe(git.add());\n});\n\n// Run git add with options\ngulp.task('add', function(){\n  return gulp.src('./git-test/*')\n    .pipe(git.add({args: '-f -i -p'}));\n});\n\n// Run git commit\n// src are the files to commit (or ./*)\ngulp.task('commit', function(){\n  return gulp.src('./git-test/*')\n    .pipe(git.commit('initial commit'));\n});\n\n// Run git commit with a computed commit message\ngulp.task('commit', function(){\n  let newVersion;\n  function computeNewVersion() { newVersion = /* ... */ }\n  return gulp.src('./git-test/*')\n    .pipe(computeNewVersion())\n    .pipe(git.commit(() =\u003e `Bumps to version ${newVersion}`));\n});\n\n// Run git commit with options\ngulp.task('commit', function(){\n  return gulp.src('./git-test/*')\n    .pipe(git.commit('initial commit', {args: '-A --amend -s'}));\n});\n\n// Run git commit without checking for a message using raw arguments\ngulp.task('commit', function(){\n  return gulp.src('./git-test/*')\n    .pipe(git.commit(undefined, {\n      args: '-m \"initial commit\"',\n      disableMessageRequirement: true\n    }));\n});\n\n// Run git commit without appending a path to the commits\ngulp.task('commit', function(){\n  return gulp.src('./git-test/*')\n    .pipe(git.commit('initial commit', {\n      disableAppendPaths: true\n    }));\n});\n\n// Run git commit, passing multiple messages as if calling\n// git commit -m \"initial commit\" -m \"additional message\"\ngulp.task('commit', function(){\n  return gulp.src('./git-test/*')\n    .pipe(git.commit(['initial commit', 'additional message']));\n});\n\n// Run git commit, emiting 'data' event during progress\n// This is useful when you have long running githooks\n// and want to show progress to your users on screen\ngulp.task('commit', function(){\n  return gulp.src('./git-test/*')\n    .pipe(git.commit('initial commit', {emitData:true}))\n    .on('data',function(data) {\n      console.log(data);\n    });\n});\n\n// Run git remote add\n// remote is the remote repo\n// repo is the https url of the repo\ngulp.task('addremote', function(){\n  git.addRemote('origin', 'https://github.com/stevelacy/git-test', function (err) {\n    if (err) throw err;\n  });\n});\n\n// Run git remote remove\n// remote is the remote repo\ngulp.task('removeremote', function(){\n  git.removeRemote('origin', function (err) {\n    if (err) throw err;\n  });\n});\n\n// Run git push\n// remote is the remote repo\n// branch is the remote branch to push to\ngulp.task('push', function(){\n  git.push('origin', 'master', function (err) {\n    if (err) throw err;\n  });\n});\n\n// Run git push\n// branch is the current branch \u0026 remote branch to push to\ngulp.task('push', function(){\n  git.push('origin', function (err) {\n    if (err) throw err;\n  });\n});\n\n// Run git push with options\n// branch is the remote branch to push to\ngulp.task('push', function(){\n  git.push('origin', 'master', {args: \" -f\"}, function (err) {\n    if (err) throw err;\n  });\n});\n\n// Run git push with multiple branches and tags\ngulp.task('push', function(){\n  git.push('origin', ['master', 'develop'], {args: \" --tags\"}, function (err) {\n    if (err) throw err;\n  });\n});\n\n// Run git pull\n// remote is the remote repo\n// branch is the remote branch to pull from\ngulp.task('pull', function(){\n  git.pull('origin', 'master', {args: '--rebase'}, function (err) {\n    if (err) throw err;\n  });\n});\n\n// Run git pull from multiple branches\ngulp.task('pull', function(){\n  git.pull('origin', ['master', 'develop'], function (err) {\n    if (err) throw err;\n  });\n});\n\n// Run git fetch\n// Fetch refs from all remotes\ngulp.task('fetch', function(){\n  git.fetch('', '', {args: '--all'}, function (err) {\n    if (err) throw err;\n  });\n});\n\n// Run git fetch\n// Fetch refs from origin\ngulp.task('fetch', function(){\n  git.fetch('origin', '', function (err) {\n    if (err) throw err;\n  });\n});\n\n// Clone a remote repo\ngulp.task('clone', function(){\n  git.clone('https://github.com/stevelacy/gulp-git', function (err) {\n    if (err) throw err;\n  });\n});\n\n// Clone remote repo to sub folder ($CWD/sub/folder/git-test)\ngulp.task('clonesub', function() {\n  git.clone('https://github.com/stevelacy/git-test', {args: './sub/folder'}, function(err) {\n    // handle err\n  });\n});\n\n// Tag the repo with a version\ngulp.task('tag', function(){\n  git.tag('v1.1.1', 'Version message', function (err) {\n    if (err) throw err;\n  });\n});\n\n// Tag the repo with a version and empty message\ngulp.task('tag', function(){\n  git.tag('v1.1.1', '', function (err) {\n    if (err) throw err;\n  });\n});\n\n// Tag the repo With signed key\ngulp.task('tagsec', function(){\n  git.tag('v1.1.1', 'Version message with signed key', {signed: true}, function (err) {\n    if (err) throw err;\n  });\n});\n\n// Create a git branch\ngulp.task('branch', function(){\n  git.branch('newBranch', function (err) {\n    if (err) throw err;\n  });\n});\n\n// Checkout a git branch\ngulp.task('checkout', function(){\n  git.checkout('branchName', function (err) {\n    if (err) throw err;\n  });\n});\n\n// Create and switch to a git branch\ngulp.task('checkout', function(){\n  git.checkout('branchName', {args:'-b'}, function (err) {\n    if (err) throw err;\n  });\n});\n\n// Merge branches to master\ngulp.task('merge', function(){\n  git.merge('branchName', function (err) {\n    if (err) throw err;\n  });\n});\n\n// Reset a commit\ngulp.task('reset', function(){\n  git.reset('SHA', function (err) {\n    if (err) throw err;\n  });\n});\n\n// Show the formatted git diff\ngulp.task('diff', function(){\n  gulp.src('./*')\n    .pipe(git.diff('master', {log: true}))\n    .pipe(gulp.dest('./diff.out'));\n});\n\n// Git rm a file or folder\ngulp.task('rm', function(){\n  return gulp.src('./gruntfile.js')\n    .pipe(git.rm());\n});\n\ngulp.task('addSubmodule', function(){\n  git.addSubmodule('https://github.com/stevelacy/git-test', 'git-test', { args: '-b master'});\n});\n\ngulp.task('updateSubmodules', function(){\n  git.updateSubmodule({ args: '--init' });\n});\n\n// Working tree status\ngulp.task('status', function(){\n  git.status({args: '--porcelain'}, function (err, stdout) {\n    if (err) throw err;\n  });\n});\n\n// Other actions that do not require a Vinyl\ngulp.task('log', function(){\n  git.exec({args : 'log --follow index.js'}, function (err, stdout) {\n    if (err) throw err;\n  });\n});\n\n// Git clean files\ngulp.task('clean', function() {\n  git.clean({ args: '-f' }, function (err) {\n    if(err) throw err;\n  });\n});\n\n// Get the current branch name\n\ngit.revParse({args:'--abbrev-ref HEAD'}, function (err, branch) {\n  console.log('current git branch: ' + branch);\n});\n\n// Run gulp's default task\ngulp.task('default',['add']);\n```\n\n##API\n\n### git.init(opt, cb)\n`git init`\n\nCreates an empty git repo\n\n`opt`: Object (optional) `{args: 'options', cwd: '/cwd/path', quiet: true, maxBuffer: 200 * 1024}`\n\n`cb`: function, passed err if any\n\n```js\ngit.init({args:'options'}, function (err) {\n  //if (err) ...\n});\n```\n\n### git.clone(remote, opt, cb)\n`git clone \u003cremote\u003e \u003coptions\u003e`\n\nClones a remote repo for the first time\n\n`remote`: String, remote url\n\n`opt`: Object (optional) `{args: 'options', cwd: '/cwd/path', quiet: true, maxBuffer: 200 * 1024}`\n\n`cb`: function, passed err if any\n\n```js\ngit.clone('https://remote.git', function (err) {\n  //if (err) ...\n});\n```\nA desination folder or subfolder can be set with `args: '\u003cdestination\u003e'`\n```\ngit.clone('https://remote.git', {args: './sub/folder'}, function (err) {\n  //if (err) ...\n});\n```\n\n### git.add(opt)\n`git add \u003cfiles\u003e`\n\nAdds files to repo\n\n`opt`: Object (optional) `{args: 'options', cwd: '/cwd/path', quiet: true, maxBuffer: 200 * 1024, maxFiles: Infinity}`\n\n```js\ngulp.src('./*')\n  .pipe(git.add());\n});\n```\n\n### git.commit(message, opt)\n`git commit -m \u003cmessage\u003e \u003cfiles\u003e`\n\nCommits changes to repo\n\n`message`: String or array of strings, commit message\n\n`opt`: Object (optional) `{args: 'options', cwd: '/cwd/path', maxBuffer: 200 * 1024, quiet: true, disableMessageRequirement: false, disableAppendPaths: false, multiline: false}`\n\n```js\ngulp.src('./*')\n  .pipe(git.commit('commit message'));\n});\n```\n\n### git.addRemote(remote, url, opt, cb)\n`git remote add \u003cremote\u003e \u003crepo https url\u003e`\n\nAdds remote repo url\n\n`remote`: String, name of remote, default: `origin`\n\n`url`: String, url of remote\n\n`opt`: Object (optional) `{args: 'options', cwd: '/cwd/path', quiet: true, maxBuffer: 200 * 1024}`\n\n`cb`: function, passed err if any\n\n```js\ngit.addRemote('origin', 'git-repo-url', function (err) {\n  //if (err) ...\n});\n```\n\n### git.removeRemote(remote, opt, cb)\n`git remote remove \u003cremote\u003e`\n\nRemoves remote repo\n\n`remote`: String, name of remote\n\n`opt`: Object (optional) `{args: 'options', cwd: '/cwd/path', quiet: true, maxBuffer: 200 * 1024}`\n\n`cb`: function, passed err if any\n\n```js\ngit.removeRemote('origin', function (err) {\n  //if (err) ...\n});\n```\n\n### git.fetch(remote, branch, opt, cb)\n`git fetch \u003cremote\u003e \u003cbranch\u003e`\n\nFetches refs and objects from remote repo\n\n`remote`: String, name of remote, default: `origin`\n\n`branch`: String, branch, default: ``\n\n`opt`: Object (optional) `{args: 'options', cwd: '/cwd/path', quiet: true, maxBuffer: 200 * 1024}`\n\n`cb`: function, passed err if any\n\n```js\ngit.fetch('origin', '', function (err) {\n  //if (err) ...\n});\n```\n\n### git.pull(remote, branch, opt, cb)\n`git pull \u003cremote\u003e \u003cbranch\u003e`\n\nPulls changes from remote repo\n\n`remote`: String, name of remote, default: `undefined`\n\n`branch`: String || Array, branch, default: `undefined`\n\n`opt`: Object (optional) `{args: 'options', cwd: '/cwd/path', quiet: true, maxBuffer: 200 * 1024}`\n\n`cb`: function, passed err if any\n\n```js\ngit.pull('origin', 'master', function (err) {\n  //if (err) ...\n});\n\n// without any remote or branches\ngit.pull(function(err){\n  //if (err) ...\n});\n\n// with only a remote\ngit.pull('upstream', function(err){\n  //if (err) ...\n});\n\n// with remote and an array of branches\ngit.pull('upstream' ['dev', 'master'], function(err){\n  //if (err) ...\n});\n```\n\n### git.push(remote, branch, opt, cb)\n`git push \u003cremote\u003e \u003cbranch\u003e`\n\nPushes changes to remote repo\n\n`remote`: String, name of remote, default: `origin`\n\n`branch`: String (may be `null`), branch, default: `master`\n\n`opt`: Object (optional) `{args: 'options', cwd: '/cwd/path', quiet: true}`\n\n`cb`: function, passed err if any\n\n```js\ngit.push('origin', 'master', function (err) {\n  //if (err) ...\n});\n```\n\n### git.tag(version, message, opt, cb)\n`git tag -a/s \u003cversion\u003e -m \u003cmessage\u003e`\n\nTags repo with release version, returns all tags when used without arguments\n\n`version`: String (optional), tag name\n\n`message`: String or array of strings (optional), tag message\n\n`opt`: Object (optional) `{args: 'options', cwd: '/cwd/path', quiet: true, maxBuffer: 200 * 1024}`\n\n`cb`: function, passed err if any\n\n```js\ngit.tag('v1.1.1', 'Version message', function (err) {\n  //if (err) ...\n});\n```\n\nif options.signed is set to true, the tag will use the git secure key:\n`git.tag('v1.1.1', 'Version message with signed key', {signed: true});`\n\n### git.branch(branch, opt, cb)\n`git branch \u003cnew branch name\u003e`\n\nCreates a new branch but doesn't switch to it\n\n(Want to switch as you create? Use `git.checkout({args:'-b'})`.)\n\n`branch`: String, branch\n\n`opt`: Object (optional) `{args: 'options', cwd: '/cwd/path', quiet: true, maxBuffer: 200 * 1024}`\n\n`cb`: function, passed err if any\n\n```js\ngit.branch('development', function (err) {\n  //if (err) ...\n});\n```\n\n### git.showBranch(opt, cb)\n`git show-branch \u003copt\u003e`\n\nShow branches and their commits\n\n`opt`: Object (optional) `{args: 'options'}`\n\n`cb`: function, passed err if any\n\n```js\ngit.showBranch({'args': '--list -a'}, function (err) {\n  //if (err) ...\n});\n```\n\n### git.checkout(branch, opt, cb)\n`git checkout \u003cnew branch name\u003e`\n\nCheckout a new branch with files\n\n`branch`: String, branch\n\n`opt`: Object (optional) `{args: 'options', cwd: '/cwd/path', quiet: true, maxBuffer: 200 * 1024}`\n\n`cb`: function, passed err if any\n\n```js\ngit.checkout('development', function (err) {\n  //if (err) ...\n});\n```\n\nIf you want to create a branch and switch to it:\n\n```js\ngit.checkout('development', {args:'-b'}, function (err) {\n  //if (err) ...\n});\n```\n\nIf you want to checkout files (e.g. revert them) use git.checkoutFiles:\n\n```js\ngulp.src('./*')\n  .pipe(git.checkoutFiles());\n```\n\n### git.checkoutFiles(opt)\n`git checkout \u003clist of files\u003e`\n\nCheckout (e.g. reset) files\n\n`opt`: Object (optional) `{args: 'options', quiet: true, maxBuffer: 200 * 1024}`\n\n```js\ngulp.src('./*')\n  .pipe(git.checkoutFiles());\n```\n\n### git.merge(branch, opt, cb)\n`git merge \u003cbranch name\u003e \u003coptions\u003e`\n\nMerges a branch into the current branch\n\n`branch`: String, source branch\n\n`opt`: Object (optional) `{args: 'options', cwd: '/cwd/path', quiet: true, maxBuffer: 200 * 1024}`\n\n`cb`: function, passed err if any\n\n```js\ngit.merge('development', function (err) {\n  //if (err) ...\n});\n```\n\n### git.rm()\n`git rm \u003cfile\u003e \u003coptions\u003e`\n\nRemoves a file from git and deletes it\n\n`opt`: Object (optional) `{args: 'options', quiet: true, maxBuffer: 200 * 1024}`\n\n```js\ngulp.src('./*')\n  .pipe(git.commit('commit message'));\n});\n```\n\n### git.reset(commit, opt, cb)\n`git reset \u003cSHA\u003e \u003coptions\u003e`\n\nResets working directory to specified commit hash\n\n`commit`: String, commit hash or reference\n\n`opt`: Object (optional) `{args: 'options', cwd: '/cwd/path', quiet: true, maxBuffer: 200 * 1024}`\n\n`cb`: function, passed err if any\n\n```js\ngit.reset('HEAD' {args:'--hard'}, function (err) {\n  //if (err) ...\n});\n```\n\n### git.revParse(opt, cb)\n`git rev-parse \u003coptions\u003e`\n\nGet details about the repository\n\n`opt`: Object (optional) `{args: 'options', cwd: '/cwd/path', quiet: true, maxBuffer: 200 * 1024}`\n\n`cb`: function, passed err if any and command stdout\n\n\n```js\ngit.revParse({args:'--short HEAD'}, function (err, hash) {\n  //if (err) ...\n  console.log('current git hash: '+hash);\n});\n```\n\n### git.addSubmodule()\n`git submodule add \u003coptions\u003e \u003crepository\u003e \u003cpath\u003e`\n\nOptions: Object\n\n`.addSubmodule('https://repository.git', 'path', {args: \"options\", quiet: true})`\n\n### git.updateSubmodule()\n`git submodule update \u003coptions\u003e`\n\nOptions: Object\n\n`.updateSubmodule({args: \"options\", quiet: true})`\n\n\n### git.status(opt, cb)\n`git status \u003coptions\u003e`\n\nShow the working tree status\n\n`opt`: Object (optional) `{args: 'options', cwd: '/cwd/path', maxBuffer: 200 * 1024, quiet: true}`\n\n`cb`: function (optional), passed err and command stdout\n\n```js\ngit.status({args : '--porcelain'}, function (err, stdout) {\n  // if (err) ...\n});\n```\n\n### git.exec(opt, cb)\n`git \u003coptions\u003e`\n\nRun other git actions that do not require a Vinyl.\n\n`opt`: Object (optional) `{args: 'options', cwd: '/cwd/path', maxBuffer: 200 * 1024, quiet: true}`\n\n`cb`: function (optional), passed err and command stdout\n\n```js\ngit.exec({args : 'log --follow index.js'}, function (err, stdout) {\n  //if (err) ...\n});\n```\n\n### git.clean(paths, opt, cb)\n`git clean \u003coptions\u003e`\n\nRemove untracked files from the working tree\n\n`paths`: String (optional), paths to be affected by clean operation\n\n`opt`: Object (optional), `{args: 'options', cwd: '/cwd/path', quiet: true, maxBuffer: 200 * 1024}`\n\n`cb`: function (optional), passed err if any\n\n### git.diff(branch, opt)\n`git diff master \u003coptions\u003e`\n\nDiffs between git objects\n\n`branch`: String, branch name, commit name, or git tag\n\n`opt`: Object (optional) `{args: 'options', cwd: '/cwd/path', quiet: true, maxBuffer: 200 * 1024}`\n\n```js\ngulp.task('diff', function(){\n  gulp.src('./*')\n    .pipe(git.diff('develop', {log: true}))\n    .pipe(gulp.dest('./diff.out'));\n});\n```\n\n#### You can view more examples in the [example folder.](https://github.com/stevelacy/gulp-git/tree/master/examples)\n\n\u003cbr/\u003e\n\u003cbr/\u003e\n\n### Possible errors:\n\n#### stdout maxBuffer exceeded\n\nReported [here](https://github.com/stevelacy/gulp-git/issues/68).\n\nIf you get this error it means that the git process doesn't have enough memory.\n\nEvery function has an additional option: `maxBuffer`.\n\n```js\ngulp.task('pull', function(){\n  git.pull('origin', 'master', {args: '--rebase', maxBuffer: Infinity}, function (err) {\n    if (err) throw err;\n  });\n});\n```\n\n#### The command line is too long.\n\nReported [here](https://github.com/stevelacy/gulp-git/issues/201).\n\nIf the `git add` command exceeds [8191 characters on Windows](https://docs.microsoft.com/en-us/troubleshoot/windows-client/shell-experience/command-line-string-limitation#more-information) you will get this error.\n\nThe `add` function has an additional option: `maxFiles`.\n\n```js\ngulp.task('add', function(){\n  return gulp.src('./git-test/*')\n    .pipe(git.add({maxFiles: 8}));\n});\n```\n\n\n\n## LICENSE\n\n(MIT License)\n\nCopyright (c) 2015 Steve Lacy \u003cme@slacy.me\u003e slacy.me\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstephenlacy%2Fgulp-git","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstephenlacy%2Fgulp-git","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstephenlacy%2Fgulp-git/lists"}