{"id":20468970,"url":"https://github.com/pfnet-research/git-ghost","last_synced_at":"2025-04-13T10:27:08.266Z","repository":{"id":48378408,"uuid":"180478628","full_name":"pfnet-research/git-ghost","owner":"pfnet-research","description":"Synchronize your working directory efficiently to a remote place without committing the changes.","archived":false,"fork":false,"pushed_at":"2022-11-07T02:04:43.000Z","size":464,"stargazers_count":74,"open_issues_count":12,"forks_count":11,"subscribers_count":14,"default_branch":"master","last_synced_at":"2025-03-27T01:51:26.520Z","etag":null,"topics":["docker","git","kubernetes","reproducibility"],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pfnet-research.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}},"created_at":"2019-04-10T01:38:28.000Z","updated_at":"2024-12-29T18:01:40.000Z","dependencies_parsed_at":"2023-01-21T08:06:11.679Z","dependency_job_id":null,"html_url":"https://github.com/pfnet-research/git-ghost","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pfnet-research%2Fgit-ghost","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pfnet-research%2Fgit-ghost/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pfnet-research%2Fgit-ghost/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pfnet-research%2Fgit-ghost/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pfnet-research","download_url":"https://codeload.github.com/pfnet-research/git-ghost/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248697397,"owners_count":21147322,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["docker","git","kubernetes","reproducibility"],"created_at":"2024-11-15T14:07:30.336Z","updated_at":"2025-04-13T10:27:08.212Z","avatar_url":"https://github.com/pfnet-research.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# git-ghost\n\n[![GoDoc][godoc-image]][godoc-link]\n[![Build Status][build-image]][build-link]\n[![Coverage Status][cov-image]][cov-link]\n\nGit Ghost is a command line tool for synchronizing your working directory efficiently to a remote place without commiting changes.\n\n## Concept\n\nGit Ghost creates 2 types of branches to synchronize your working directory.\n\n### Commits Branch\n\nThis type of branch contains commits between 2 commits which can exist only in your working directory.\n\n### Diff Branch\n\nThis type of branch contains modifications from a specific commit in your working directory.\n\n## Installing\n\n### From Source\n\nInstall the binary from source: execute,\n\n```bash\n$ git clone https://github.com/pfnet-research/git-ghost\n$ cd git-ghost\n$ make install\n```\n\nCompiled binary is located in `dist` folder.\n\n### Releases\n\nThe binaries of each releases are available in [Releases](../../releases).\n\n## Getting Started\n\nFirst, create an empty repository which can be accessible from a remote place. Set the URL as `GIT_GHOST_REPO` env.\n\nAssume your have a local working directory `DIR_L` and a remote directory to be synchronized `DIR_R`.\n\n## Case 1 (`DIR_L` HEAD == `DIR_R` HEAD)\n\nYou can synchoronize local modifications.\n\n```bash\n$ cd \u003cDIR_L\u003e\n$ git-ghost push\n\u003cHASH\u003e\n$ git-ghost show \u003cHASH\u003e\n...\n$ cd \u003cDIR_R\u003e\n$ git-ghost pull \u003cHASH\u003e\n```\n\n## Case 2 (`DIR_L` HEAD \\\u003e `DIR_R` HEAD)\n\nYou can synchronize local commits and modifications.\n\nAssume `DIR_R`'s HEAD is HASH\\_R.\n\n```bash\n$ cd \u003cDIR_L\u003e\n$ git-ghost push all \u003cHASH_R\u003e\n\u003cHASH_1\u003e \u003cHASH_2\u003e\n\u003cHASH_3\u003e\n$ git-ghost show all \u003cHASH_2\u003e \u003cHASH_3\u003e\n...\n$ cd \u003cDIR_R\u003e\n$ git-ghost pull all \u003cHASH_2\u003e \u003cHASH_3\u003e\n```\n\n## Development\n\n```\n# checkout this repo to $GOPATH/src/git-ghost\n$ cd $GOPATH/src\n$ git clone git@github.com:pfnet-research/git-ghost.git\n$ cd git-ghost\n\n# build\n$ make build\n\n# see godoc\n$ go get golang.org/x/tools/cmd/godoc\n$ godoc -http=:6060  # access http://localhost:6060 in browser\n```\n\n## Contributing\n\n1. Fork it\n2. Create your feature branch (`git checkout -b my-new-feature`)\n3. Commit your changes (`git commit -am 'Add some feature'`)\n4. Push to the branch (`git push origin my-new-feature`)\n5. Create new [Pull Request](../../pull/new/master)\n\n## Release\n\nRelease flow is fully automated. All the maintainer need to do is just to approve and merge [the next release PR](https://github.com/pfnet-research/git-ghost/pulls?q=is%3Apr+is%3Aopen+label%3Atagpr+)\n\n## Copyright\n\nCopyright (c) 2019 Preferred Networks. See [LICENSE](LICENSE) for details.\n\n[build-image]: https://github.com/pfnet-research/git-ghost/actions/workflows/ci.yml/badge.svg\n[build-link]:  https://github.com/pfnet-research/git-ghost/actions/workflows/ci.yml\n[cov-image]:   https://coveralls.io/repos/github/pfnet-research/git-ghost/badge.svg?branch=master\n[cov-link]:    https://coveralls.io/github/pfnet-research/git-ghost?branch=master\n[godoc-image]: https://godoc.org/github.com/pfnet-research/git-ghost?status.svg\n[godoc-link]:  https://godoc.org/github.com/pfnet-research/git-ghost\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpfnet-research%2Fgit-ghost","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpfnet-research%2Fgit-ghost","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpfnet-research%2Fgit-ghost/lists"}