Skip to content

git-snapshot is a command-line tool to take a snapshot of the directory and creates/updates another branch, like git subtree split --squash.

License

Notifications You must be signed in to change notification settings

mob-sakai/git-snapshot

Repository files navigation

git-snapshot

git-snapshot is a tool to take a snapshot of the directory and creates/updates another branch, like git subtree split --squash.

npm npm (beta) license downloads release semantic-release

Summary

git-snapshot is a tool to take a snapshot of the directory and creates/updates another branch, like git subtree split --squash.

  • git-snapshot is a sub-command of git
  • Take a snapshot of the directory as a commit
  • Simple and fast
  • Unlike git subtree split, you can split from the directory in which you want

To take a snapshot, subtree split vs snapshot

subtree split snapshot
git subtree split --rejoin --prefix=path/to/target snapshot git snapshot --prefix=path/to/target --branch=snapshot
👍 Official command
- Contain all history
👎 Long commit log
👎 No squash option
👎 No support for moving target directory
- No history
👍 Short commit log
👍 Fast operation
👍 Any target directory

Installation

Global installation

Install globally (add to your PATH) and you can use git-snapshot as a git sub-command.

$ npm install -g git-snapshot 

Local installation

For Node modules projects we recommend installing git-snapshot locally.

$ npm install --save git-snapshot 

Usage

CLI Usage

usage: git snapshot --prefix=<path> --branch=<branch> --message=<message>
[--tag=<tag>] [--remote=<repository>] [--dry-run] [--cwd=<path>]

Required
  --branch, -b   the name of branch for split to                 [string] [required]

Options:
  --help, -h     Show help                                                 [boolean]
  --version, -v  Show version                                              [boolean]
  --prefix, -p   the name of the subdir to split out                        [string]
  --message, -m  commit message                                             [string]
  --author, -a   override the commit author                                 [string]
  --force, -f    allow force commit, tag, push                             [boolean]
  --tag, -t      tag name                                                   [string]
  --remote, -r   remote repository                                          [string]
  --dry-run, -d  skip publishing                                           [boolean]
  --debug        output debugging information                              [boolean]
  --cwd, -c      working directory                                          [string]

Code Usage

const gitSnapshot = require('git-snapshot')

// Options are the same as command line, except camelCase
// gitSnapshot returns a Promise
gitSnapshot({
  prefix: './Packages/SomePackage',
  branch: 'upm',
  message: 'Release 1.0.0',
  author: 'snapshot',
  force: false,
  tag: '1.0.0',
  remote: 'origin',
  dryRun: false,
  cwd: process.cwd(),
}).then(() => {
  // git-snapshot is done
}).catch(err => {
    console.error(`git-snapshot failed with message: ${err.message}`)
})

License

MIT

See Also

become_a_sponsor_on_github

About

git-snapshot is a command-line tool to take a snapshot of the directory and creates/updates another branch, like git subtree split --squash.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •