git-ghost
Git Ghost is a command line tool for synchronizing your working directory efficiently to a remote place without commiting changes.
Concept
Git Ghost creates 2 types of branches to synchronize your working directory.
Commits Branch
This type of branch contains commits between 2 commits which can exist only in your working directory.
Diff Branch
This type of branch contains modifications from a specific commit in your working directory.
Installing
From Source
Install the binary from source: execute,
$ git clone https://github.com/pfnet-research/git-ghost
$ cd git-ghost
$ make install
Compiled binary is located in dist
folder.
Releases
The binaries of each releases are available in Releases.
Getting Started
First, create an empty repository which can be accessible from a remote place. Set the URL as GIT_GHOST_REPO
env.
Assume your have a local working directory DIR_L
and a remote directory to be synchronized DIR_R
.
Case 1 (DIR_L
HEAD == DIR_R
HEAD)
You can synchoronize local modifications.
$ cd <DIR_L>
$ git-ghost push
<HASH>
$ git-ghost show <HASH>
...
$ cd <DIR_R>
$ git-ghost pull <HASH>
Case 2 (DIR_L
HEAD > DIR_R
HEAD)
You can synchronize local commits and modifications.
Assume DIR_R
's HEAD is HASH_R.
$ cd <DIR_L>
$ git-ghost push all <HASH_R>
<HASH_1> <HASH_2>
<HASH_3>
$ git-ghost show all <HASH_2> <HASH_3>
...
$ cd <DIR_R>
$ git-ghost pull all <HASH_2> <HASH_3>
Development
# checkout this repo to $GOPATH/src/git-ghost
$ cd $GOPATH/src
$ git clone git@github.com:pfnet-research/git-ghost.git
$ cd git-ghost
# build
$ make build
# see godoc
$ go get golang.org/x/tools/cmd/godoc
$ godoc -http=:6060 # access http://localhost:6060 in browser
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
)
- Commit your changes (
git commit -am 'Add some feature'
)
- Push to the branch (
git push origin my-new-feature
)
- Create new Pull Request
Release
Release flow is fully automated. All the maintainer need to do is just to approve and merge the next release PR
Copyright
Copyright (c) 2019 Preferred Networks. See LICENSE for details.