[PATCH v3 0/2] advise about force-pushing as an alternative to reconciliation
- From
Alex Henrie <alexhenrie24@gmail.com>
- Date
- Jul 6, 2023, 04:01 UTC
- Message-ID
- <20230706040111.81110-1-alexhenrie24@gmail.com>
- In-Reply-To
- <20230704194756.166111-1-alexhenrie24@gmail.com>
Many times now, I have seen novices do the following:
1. Start work on their own personal topic branch 2. Push the branch to origin 3. Rebase the branch onto origin/master 4. Try to push again, but Git says they need to pull 5. Pull and make a mess trying to reconcile the older topic branch with the rebased topic branch
Help avoid this mistake by giving advice that mentions force-pushing, rather than assuming that the user always wants to do reconciliation.
Changes from v2: - Switch back to recommending plain --force in these cases - Use Junio's proposed wording in remote.c
Alex Henrie (2): remote: advise about force-pushing as an alternative to reconciliation push: advise about force-pushing as an alternative to reconciliation
builtin/push.c | 27 +++++++++++++++------------ remote.c | 5 ++++- 2 files changed, 19 insertions(+), 13 deletions(-)
Range-diff against v2:
1: d0cb607225 < -: ---------- remote: advise about force-pushing as an alternative to reconciliation
-: ---------- > 1: 9cbf5f138e remote: advise about force-pushing as an alternative to reconciliation
2: 3295f0bb2b ! 2: 727e1f7636 push: advise about force-pushing as an alternative to reconciliation
@@ builtin/push.c: static void setup_default_push_refspecs(int *flags, struct remot
- "its remote counterpart. Integrate the remote changes (e.g.\n"
- "'git pull ...') before pushing again.\n"
+ "its remote counterpart. Use 'git pull' to integrate the remote changes\n"
-+ "before pushing again, or use 'git push --force-with-lease' to delete the\n"
-+ "remote changes and replace them with your own.\n"
++ "before pushing again, or use 'git push --force' to delete the remote\n"
++ "changes and replace them with your own.\n"
"See the 'Note about fast-forwards' in 'git push --help' for details.");
static const char message_advice_checkout_pull_push[] =
@@ builtin/push.c: static void setup_default_push_refspecs(int *flags, struct remot
- "counterpart. Check out this branch and integrate the remote changes\n"
- "(e.g. 'git pull ...') before pushing again.\n"
+ "counterpart. Check out this branch and use 'git pull' to integrate the\n"
-+ "remote changes before pushing again, or use\n"
-+ "'git push --force-with-lease' to delete the remote changes and replace\n"
-+ "them with your own.\n"
++ "remote changes before pushing again, or use 'git push --force' to delete\n"
++ "the remote changes and replace them with your own.\n"
"See the 'Note about fast-forwards' in 'git push --help' for details.");
static const char message_advice_ref_fetch_first[] =
@@ builtin/push.c: static void setup_default_push_refspecs(int *flags, struct remot
+ N_("Updates were rejected because the remote contains work that you do not\n"
+ "have locally. This is usually caused by another repository pushing to\n"
+ "the same ref. Use 'git pull' to integrate the remote changes before\n"
-+ "pushing again, or use 'git push --force-with-lease' to delete the\n"
-+ "remote changes and replace them with your own.\n"
++ "pushing again, or use 'git push --force' to delete the remote changes\n"
++ "and replace them with your own.\n"
"See the 'Note about fast-forwards' in 'git push --help' for details.");
static const char message_advice_ref_already_exists[] =
@@ builtin/push.c: static const char message_advice_ref_needs_force[] =
- "before forcing an update.\n");
+ N_("Updates were rejected because the tip of the remote-tracking branch has\n"
+ "been updated since the last checkout. Use 'git pull' to integrate the\n"
-+ "remote changes before pushing again, or use\n"
-+ "'git push --force-with-lease' to delete the remote changes and replace\n"
-+ "them with your own.\n");
++ "remote changes before pushing again, or use 'git push --force' to delete\n"
++ "the remote changes and replace them with your own.\n");
static void advise_pull_before_push(void)
{-- 2.41.0