aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeels Hofmeyr <neels@hofmeyr.de>2018-11-12 23:25:57 +0100
committerNeels Hofmeyr <neels@hofmeyr.de>2018-11-20 16:50:15 +0100
commit20d95d003e723b0dcf9123f6007e50c83405a5e7 (patch)
treedc3291ad66f2a9dba5472b607ba5eda27df83b12
parentdff944bff67e42a24b0f92b726ff2aabf54d1067 (diff)
gits: when asking for reset --hard, also offer push -f
-rwxr-xr-xsrc/gits13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/gits b/src/gits
index c7f5750..d47759f 100755
--- a/src/gits
+++ b/src/gits
@@ -238,16 +238,19 @@ def ask(git_dir, *question, valid_answers=('*',)):
return answer
-def ask_reset_hard(git_dir):
+def ask_reset_hard_or_push_f(git_dir):
do_reset = ask(git_dir, 'Diverged.',
'%s: git reset --hard %s?' % (
orig_branch, upstream_branch),
'<empty> no',
- 'OK yes (write OK in caps!)',
- valid_answers=('', 'OK'))
+ 'OK yes, reset to upstream (write OK in caps!)',
+ 'P `push -f` to overwrite upstream (P in caps!)',
+ valid_answers=('', 'OK', 'P'))
if do_reset == 'OK':
git(git_dir, 'reset', '--hard', upstream_branch)
+ elif do_reset == 'P':
+ git(git_dir, 'push', '-f')
def rebase(git_dir):
@@ -287,7 +290,7 @@ def rebase(git_dir):
# Diverged
elif ahead and behind:
- ask_reset_hard(git_dir)
+ ask_reset_hard_or_push_f(git_dir)
# Behind
elif behind:
@@ -315,7 +318,7 @@ def rebase(git_dir):
git(git_dir, 'commit', '-am', 'wip', may_fail=True)
git(git_dir, 'checkout', orig_branch)
- ask_reset_hard(git_dir)
+ ask_reset_hard_or_push_f(git_dir)
return orig_branch