git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v2 2/2] pull: improve default warning

From
Felipe Contreras <felipe.contreras@gmail.com>
Date
Jun 23, 2021, 00:48 UTC
Message-ID
<20210623004815.1807-3-felipe.contreras@gmail.com>
In-Reply-To
<20210623004815.1807-1-felipe.contreras@gmail.com>

According to feedback from GitHub trainers [1], most newcomers don't understand what a rebase is. So in the default warning we want to provide our users with a command that does the most sensible thing, fixes the divergence, gets rid of the warning, with the minimum mental effort, and happens to be the default:

  git pull --no-rebase (later --merge)

In addition, we don't want to start by recommending a permanent configuration, but a temporary solution so they start training their fingers and maybe learn how to do a rebase. So we start with the commands.

Also, we need to be clear about what we mean by "specifying"; merge, or rebase.

Moreover, thanks to the previous patch now "git pull --help" explains what a fast-forward is, let's mention that reference.

And finally, use --global in the configuration commands like we did with push.default.

[1] https://lore.kernel.org/git/20130909201751.GA14437@sigill.intra.peff.net/
Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
---
 builtin/pull.c | 21 +++++++++++----------
 1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/builtin/pull.c b/builtin/pull.c
index 3e13f81084..ede2895ecd 100644
--- a/builtin/pull.c
+++ b/builtin/pull.c
@@ -927,18 +927,19 @@ static int get_can_ff(struct object_id *orig_head, struct object_id *orig_merge_
 
 static void show_advice_pull_non_ff(void)
 {
-	advise(_("Pulling without specifying how to reconcile divergent branches is\n"
-		 "discouraged. You can squelch this message by running one of the following\n"
-		 "commands sometime before your next pull:\n"
+	advise(_("Pulling without specifying how to reconcile divergent branches is discouraged;\n"
+		 "you need to specify if you want a merge, or a rebase.\n"
 		 "\n"
-		 "  git config pull.rebase false  # merge (the default strategy)\n"
-		 "  git config pull.rebase true   # rebase\n"
-		 "  git config pull.ff only       # fast-forward only\n"
+		 "  git pull --no-rebase # the default (merge)\n"
+		 "  git pull --rebase\n"
 		 "\n"
-		 "You can replace \"git config\" with \"git config --global\" to set a default\n"
-		 "preference for all repositories. You can also pass --rebase, --no-rebase,\n"
-		 "or --ff-only on the command line to override the configured default per\n"
-		 "invocation.\n"));
+		 "You can squelch this message by running one of the following commands:\n"
+		 "\n"
+		 "  git config --global pull.rebase false  # merge\n"
+		 "  git config --global pull.rebase true   # rebase\n"
+		 "  git config --global pull.ff only       # fast-forward only\n"
+		 "\n"
+		 "Read \"git pull --help\" for more information."));
 }
 
 int cmd_pull(int argc, const char **argv, const char *prefix)
-- 
2.32.0
Previous: Felipe Contreras
Message 40 of 40 in “pull: documentation improvements”
  1. 0/2 pull: documentation improvementsFelipe Contreras, Jun 21, 2021
  2. 1/2 doc: pull: explain what is a fast-forwardFelipe Contreras, Jun 21, 2021
  3. Bagas SanjayaJun 22, 2021
  4. Felipe ContrerasJun 23, 2021
  5. Philip OakleyJun 24, 2021
  6. Felipe ContrerasJun 24, 2021
  7. Philip OakleyJun 24, 2021
  8. Felipe ContrerasJun 24, 2021
  9. Philip OakleyJun 24, 2021
  10. Felipe ContrerasJun 24, 2021
  11. Ævar Arnfjörð BjarmasonJun 25, 2021
  12. Felipe ContrerasJun 25, 2021
  13. Ævar Arnfjörð BjarmasonJun 25, 2021
  14. Felipe ContrerasJun 25, 2021
  15. Kerry, RichardJun 25, 2021
  16. Felipe ContrerasJun 25, 2021
  17. Felipe ContrerasJun 25, 2021
  18. 2/2 pull: improve default warningFelipe Contreras, Jun 21, 2021
  19. Alex HenrieJun 21, 2021
  20. Felipe ContrerasJun 21, 2021
  21. Alex HenrieJun 21, 2021
  22. Felipe ContrerasJun 21, 2021
  23. Alex HenrieJun 22, 2021
  24. Felipe ContrerasJun 22, 2021
  25. Elijah NewrenJun 22, 2021
  26. Alex HenrieJun 22, 2021
  27. Elijah NewrenJun 23, 2021
  28. Felipe ContrerasJun 23, 2021
  29. Elijah NewrenJun 23, 2021
  30. Felipe ContrerasJun 23, 2021
  31. Felipe ContrerasJun 23, 2021
  32. Elijah NewrenJun 23, 2021
  33. Felipe ContrerasJun 23, 2021
  34. Alex HenrieJun 24, 2021
  35. Felipe ContrerasJun 24, 2021
  36. Alex HenrieJun 27, 2021
  37. Felipe ContrerasJun 27, 2021
  38. 0/2 pull: documentation improvementsFelipe Contreras, Jun 23, 2021
  39. 1/2 doc: pull: explain what is a fast-forwardFelipe Contreras, Jun 23, 2021
  40. 2/2 pull: improve default warningFelipe Contreras, Jun 23, 2021

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.