A console script that allows you to easily update multiple git repositories at once
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

README.md 3.5 KiB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. __gitup__ (the _git-repo-updater_)
  2. [![ci](https://github.com/earwig/git-repo-updater/actions/workflows/ci.yml/badge.svg)](https://github.com/earwig/git-repo-updater/actions/workflows/ci.yml)
  3. gitup is a tool for updating multiple git repositories at once. It is smart
  4. enough to handle several remotes, dirty working directories, diverged local
  5. branches, detached HEADs, and more. It was originally created to manage a large
  6. collection of projects and deal with sporadic internet access.
  7. gitup should work on macOS, Linux, and Windows. You should have the latest
  8. version of git and either Python 2.7 or Python 3 installed.
  9. # Installation
  10. With [pip](https://github.com/pypa/pip/):
  11. pip install gitup
  12. With [Homebrew](http://brew.sh/):
  13. brew install gitup
  14. ## From source
  15. First:
  16. git clone git://github.com/earwig/git-repo-updater.git
  17. cd git-repo-updater
  18. Then, to install for everyone:
  19. sudo python setup.py install
  20. or for just yourself (make sure you have `~/.local/bin` in your PATH):
  21. python setup.py install --user
  22. Finally, simply delete the `git-repo-updater` directory, and you're done!
  23. __Note:__ If you are using Windows, you may wish to add a macro so you can
  24. invoke gitup in any directory. Note that `C:\python27\` refers to the
  25. directory where Python is installed:
  26. DOSKEY gitup=c:\python27\python.exe c:\python27\Scripts\gitup $*
  27. # Usage
  28. There are two ways to update repos: you can pass them as command arguments,
  29. or save them as "bookmarks".
  30. For example:
  31. gitup ~/repos/foo ~/repos/bar ~/repos/baz
  32. will automatically pull to the `foo`, `bar`, and `baz` git repositories.
  33. Additionally, you can just type:
  34. gitup ~/repos
  35. to automatically update all git repositories in that directory.
  36. To add bookmarks, either of these will work:
  37. gitup --add ~/repos/foo ~/repos/bar ~/repos/baz
  38. gitup --add ~/repos
  39. Then, to update all of your bookmarks, just run gitup without args:
  40. gitup
  41. Delete a bookmark:
  42. gitup --delete ~/repos
  43. View your current bookmarks:
  44. gitup --list
  45. You can mix and match bookmarks and command arguments:
  46. gitup --add ~/repos/foo ~/repos/bar
  47. gitup ~/repos/baz # update 'baz' only
  48. gitup # update 'foo' and 'bar' only
  49. gitup ~/repos/baz --update # update all three!
  50. Update all git repositories in your current directory:
  51. gitup .
  52. You can control how deep gitup will look for repositories in a given directory,
  53. if that directory is not a git repo by itself, with the `--depth` (or `-t`)
  54. option. `--depth 0` will disable recursion entirely, meaning the provided paths
  55. must be repos by themselves. `--depth 1` will descend one level (this is the
  56. old behavior from pre-0.5 gitup). `--depth -1` will recurse indefinitely,
  57. which is not recommended. The default is `--depth 3`.
  58. By default, gitup will fetch all remotes in a repository. Pass `--current-only`
  59. (or `-c`) to make it fetch only the remote tracked by the current branch.
  60. Also by default, gitup will try to fast-forward all branches that have
  61. upstreams configured. It will always skip branches where this is not possible
  62. (e.g. dirty working directory or a merge/rebase is required). Pass
  63. `--fetch-only` (or `-f`) to skip this step and only fetch remotes.
  64. After fetching, gitup will _keep_ remote-tracking branches that no longer exist
  65. upstream. Pass `--prune` (or `-p`) to delete them, or set `fetch.prune` or
  66. `remote.<name>.prune` in your git config to do this by default.
  67. For a full list of all command arguments and abbreviations:
  68. gitup --help