git-split-branch
Ever wanted to split big branch by directories changed? Stop giving your teammates big PRs if you can split it.
Installation
Next commands will add git-split-branch
binary to your binary list.
Yarn
yarn global add git-split-branch
NPM
npm install -g git-split-branch
Usage
git-split-branch dir
This command will help you split your current branch into new extra branch with changes only in folder dir.
Arguments
dir [otherDirs...]
Directories you want to split branch to. You could specify exact branches or part of directory name.
dir/full/path
path
Options
-V, --version
Output current git-split-branch
version.
-w, --workdir
Directory where actual split will happen.
"./" by default.
-R, --no-root
Flag if cli should run all commands from root of repo or not. With -R
flag all commands will go from -w
directory otherwise from root of repo.
"false" by default.
-f, --from
Branch you'd like to compare from. Used to find diff commits. Specify -f BRANCH
if you want compare to custom branch.
"develop" by default.
-t, --to
Branch you'd like to compare to. Used to find diff commits. Specify -t BRANCH
if you want compare to custom branch.
"CURRENT BRANCH" by default.
-b, --branches
Branches you would like to commit to, separated by ";". Count of branches should be same as directories to use for split.
By default CLI will propose you to create branches based on -t
option.
-v, --verbosity
Set logger level to log extra information just in case.
-v
would make 'info' verbosity.
-v debug
would specify exact level of verbosity.
No extra levels supported.
"notice" level by default.
-d, --find-depth
Depth of looking for directories when finding best match for input.
"5" by default.
-h, --help
Log some help.
Algo underneath
- find directories with fuzzySearch
- create branches for each split
- find all commits effected each directory separately with
git rev-list --reverse --no-merges FROM..TO -- DIR
- apply all commits one by one for each dir
git checkout HASH -- DIR