PyGitUp
is a Python port of
aanand/git-up. It not only
fully covers the abilities of git-up and should be a drop-in replacement,
but also extends it slightly.
git up
?git pull has two problems:
- It merges upstream changes by default, when it's really more polite to rebase over them, unless your collaborators enjoy a commit graph that looks like bedhead.
- It only updates the branch you're currently on, which means git push will shout at you for being behind on branches you don't particularly care about right now.
I wasn't able to use the original git-up
, because I didn't want to install
a whole Ruby suite just for git-up and even with Ruby installed, there were
some problems running on my Windows machine. So, my reasons for writing
and using this port are:
git-up
via pip: $ pip install git-up
cd
to your project's directory.git up
and enjoy!See these instructions for installing pip, if you haven't already installed it. And don't forget to either:
Python/Scripts
and Python/Lib/site-packages
writable for
you,pip
with admin privilegespip install --user git-up
and add %APPDATA%/Python/Scripts
to %PATH%
.Otherwise pip will refuse to install git-up
due to Access denied
errors.
Python 2.7, 3.4, 3.5 and 3.6 are supported :)
git up -h
shows a help message.git up --quiet
suppresses all output except for error messages.git up --no-fetch
skips fetching the remote and rebases all local branches.git up --version
shows the current version and optionally checks for
updates (see below).To configure PyGitUp
, you can set options in your git config. Run
git config [--global] git-up.[name] [value]
to set one of these
options:
git-up.bundler.check [true|*false*]
: If set to
true
,PyGitUp
will check your app for any new bundled gems
and suggest a bundle install
if necessary.git-up.bundler.autoinstall [true|*false*]
: If set to
true
,PyGitUp
will run bundle install
automatically.
Requires git-up.bundler.check
to be true.git-up.bundler.local [true|*false*]
: If you've bundle package
-ed
your project gems, you can tell PyGitUp
to run bundle install
--local
for you if it finds missing gems. Much faster than just a plain
old bundle install
. Don't worry if you're missing gems, it will
backtrack to bundle install
if anything goes wrong. Make sure
git-up.bundler.autoinstall
is also set to true
or it won't do
anything.git-up.bundler.rbenv [true|*false*]
: If you have rbenv installed,
you can tell PyGitUp
to run rbenv rehash
for you after it installs
your gems so any binaries will be available right away. Make sure git-up
.bundler.autoinstall
is also set to true
or it won't do anything.git-up.fetch.prune [*true*|false]
: If set to true
,
PyGitUp
will append the --prune
option to git fetch
and
thus remove any remote tracking branches which no longer exist on
the remote (see git fetch
--help).git-up.fetch.all [true|*false*]
: If set to false
, PyGitUp
will only fetch remotes for which there is at least one local
tracking branch. Setting this option will make git up
always fetch
from all remotes, which is useful if e.g. you use a remote to push to
your CI system but never check those branches out.git-up.push.auto [true|*false*]
: Push the current branch after
rebasing and fast-forwarding.git-up.push.all [true|*false*]
: Push all branches when auto-pushing.git-up.push.tags [true|*false*]
: Push tags when auto-pushing.git-up.rebase.arguments [string]
: If set, PyGitUp
will use
this string as additional arguments when calling git rebase
.
Example: --preserve-merges
to recreate merge commits in the
rebased branch.git-up.rebase.auto [*true*|false]
: If set to false
,
PyGitUp
won't rebase your branches for you but notify you that
they diverged. This can be useful if you have a lot of in-progress
work that you don't want to deal with at once, but still want to
update other branches.git-up.rebase.log-hook [cmd]
: Runs cmd
every time a branch
is rebased or fast-forwarded, with the old head as $1
and the new
head as $2
. This can be used to view logs or diffs of incoming
changes. Example:
echo "changes on $1:"; git log --oneline --decorate $1..$2
.git-up.rebase.show-hashes [true|*false*]
: If set to true
,
PyGitUp
will show the hashes of the current commit (or the point
where the rebase starts) and the target commit like git pull
does.git-up.updates.check [*true*|false]
: When running git up --version
,
it shows the version number and checks for updates. If you feel
uncomfortable with it, just set it to false
to turn off the checks.The original git-up
has been written by aanand:
aanand/git-up/.
-V, -q, -h
, see #73).pip install
. Thanks @ekohl
for Pull Request #60.git worktree
(#58).--no-fetch
). Thanks @buoto
for Pull Request #46.git submodule foreach
(#8).setuptools 8.x
(#19).git pull
does (git-up.rebase.show-hashes
).PyGitUp
output.ahead of upstream
messages are now cyan (see aanand/git-up#60).Prior to v1.1.0, PyGitUp
tried to guess the upstream branch for a local
branch by looking for a branch on any remote with the same name. With v1.1.0,
PyGitUp
stops guessing and uses the upstream branch config instead.
This by the way fixes issue #6
(git up
doesn't work with local only branches).
Note:
This change may break setups, where a local branch accidently has
the same name as a remote branch without any tracking information set. Prior
to v1.1.0, git up
would still fetch and rebase from the remote branch.
If you run into troubles with such a setup, setting tracking information
using git branch -u <remote>/<remote branch> <local branch>
should help.
3rd party dependencies have been updated.
Allows to run git up --version
from non-git dirs, too.
Finally PyGitUp
reaches 1.0.0. You can consider it stable now :)
-h
to display a help screen (--help
won't work, because
git
catches this option and handles it before PyGitUp
can do).--version
to show, what version of PyGitUp
is running.
Also checks for updates (can be disabled, see configuration).--quiet
to be quiet and only display error messages.bundle install --local
and
rbenv rehash
.Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )