diff --git a/Documentation/cmd-list.perl b/Documentation/cmd-list.perl
index 5aa73cfe45..62c32f58da 100755
--- a/Documentation/cmd-list.perl
+++ b/Documentation/cmd-list.perl
@@ -43,7 +43,7 @@ sub format_one {
 }
 
 my %cmds = ();
-for (sort <>) {
+for (<>) {
 	next if /^#/;
 
 	chomp;
diff --git a/command-list.txt b/command-list.txt
index 3a9af104b5..fb088dadea 100644
--- a/command-list.txt
+++ b/command-list.txt
@@ -43,164 +43,183 @@
 # specified here, which can only have "guide" attribute and nothing
 # else.
 #
+# February 2019: This list had been sorted alphabetically but has been
+# reordered to make it easier for people to learn from the main git(1)
+# manual page. The new ordering is according to approximate usefulness
+# / frequency of use / order of use, with some grouping by topic. The
+# idea is to make it possible to read the manual page from beginning
+# to end and see the most important commands first, rather than
+# getting them in alphabetical order - in other words, to make the
+# manual page more like a table of contents and less like an index.
+# Please consider this when adding new commands.
+#
 ### command list (do not change this line, also do not change alignment)
 # command name                          category [category] [category]
+# From gittutorial
+git-help                                ancillaryinterrogators          complete
+git-config                              ancillarymanipulators           complete
+git-clone                               mainporcelain           init
+git-init                                mainporcelain           init
 git-add                                 mainporcelain           worktree
-git-am                                  mainporcelain
-git-annotate                            ancillaryinterrogators
-git-apply                               plumbingmanipulators            complete
-git-archimport                          foreignscminterface
-git-archive                             mainporcelain
-git-bisect                              mainporcelain           info
-git-blame                               ancillaryinterrogators          complete
+git-commit                              mainporcelain           history
+git-diff                                mainporcelain           history
+git-status                              mainporcelain           info
+git-log                                 mainporcelain           info
 git-branch                              mainporcelain           history
-git-bundle                              mainporcelain
-git-cat-file                            plumbinginterrogators
-git-check-attr                          purehelpers
-git-check-ignore                        purehelpers
-git-check-mailmap                       purehelpers
 git-checkout                            mainporcelain           history
+git-merge                               mainporcelain           history
+gitk                                    mainporcelain
+git-pull                                mainporcelain           remote
+git-fetch                               mainporcelain           remote
+# From tutorial NEXT STEPS
+git-format-patch                        mainporcelain
+git-bisect                              mainporcelain           info
+giteveryday                             guide
+gitworkflows                            guide
+gitcvs-migration                        guide
+# From giteveryday
+git-reset                               mainporcelain           worktree
+git-rebase                              mainporcelain           history
+git-tag                                 mainporcelain           history
+git-push                                mainporcelain           remote
+git-send-email                          foreignscminterface             complete
+git-request-pull                        foreignscminterface             complete
+git-am                                  mainporcelain
+git-revert                              mainporcelain
+git-daemon                              synchingrepositories
+git-shell                               synchelpers
+git-http-backend                        synchingrepositories
+gitweb                                  ancillaryinterrogators
+# From user feedback
+git-grep                                mainporcelain           info
+git-show                                mainporcelain           info
+git-submodule                           mainporcelain
+git-cherry-pick                         mainporcelain
+git-clean                               mainporcelain
+# From gittutorial-2
+git-cat-file                            plumbinginterrogators
+git-ls-tree                             plumbinginterrogators
+git-ls-files                            plumbinginterrogators
+gitcore-tutorial                        guide
+gitglossary                             guide
+# From gitcore-tutorial
+git-update-index                        plumbingmanipulators
+git-diff-files                          plumbinginterrogators
+git-write-tree                          plumbingmanipulators
+git-read-tree                           plumbingmanipulators
 git-checkout-index                      plumbingmanipulators
-git-check-ref-format                    purehelpers
+git-show-branch                         ancillaryinterrogators          complete
+git-name-rev                            plumbinginterrogators
+git-merge-index                         plumbingmanipulators
+git-repack                              ancillarymanipulators           complete
+git-prune-packed                        plumbingmanipulators
+git-update-server-info                  synchingrepositories
+git-prune                               ancillarymanipulators
 git-cherry                              plumbinginterrogators          complete
-git-cherry-pick                         mainporcelain
+# Guides, reordered
+gittutorial                             guide
+gittutorial-2                           guide
+gitrevisions                            guide
+gitignore                               guide
+gitcli                                  guide
+gitrepository-layout                    guide
+gitdiffcore                             guide
+gitmodules                              guide
+githooks                                guide
+gitnamespaces                           guide
+gitattributes                           guide
+# All other commands, sorted by man page category and then by
+# approximate priority
+git-stash                               mainporcelain
+git-rm                                  mainporcelain           worktree
+git-mv                                  mainporcelain           worktree
+git-gui                                 mainporcelain
 git-citool                              mainporcelain
-git-clean                               mainporcelain
-git-clone                               mainporcelain           init
-git-column                              purehelpers
-git-commit                              mainporcelain           history
-git-commit-graph                        plumbingmanipulators
-git-commit-tree                         plumbingmanipulators
-git-config                              ancillarymanipulators           complete
-git-count-objects                       ancillaryinterrogators
-git-credential                          purehelpers
-git-credential-cache                    purehelpers
-git-credential-store                    purehelpers
-git-cvsexportcommit                     foreignscminterface
-git-cvsimport                           foreignscminterface
-git-cvsserver                           foreignscminterface
-git-daemon                              synchingrepositories
+git-archive                             mainporcelain
+git-shortlog                            mainporcelain
 git-describe                            mainporcelain
-git-diff                                mainporcelain           history
-git-diff-files                          plumbinginterrogators
-git-diff-index                          plumbinginterrogators
-git-diff-tree                           plumbinginterrogators
-git-difftool                            ancillaryinterrogators          complete
+git-gc                                  mainporcelain
+git-notes                               mainporcelain
+git-worktree                            mainporcelain
+git-bundle                              mainporcelain
+git-range-diff                          mainporcelain
+git-stage                                                               complete
+git-reflog                              ancillarymanipulators           complete
+git-remote                              ancillarymanipulators           complete
+git-mergetool                           ancillarymanipulators           complete
+git-filter-branch                       ancillarymanipulators
+git-replace                             ancillarymanipulators           complete
 git-fast-export                         ancillarymanipulators
 git-fast-import                         ancillarymanipulators
-git-fetch                               mainporcelain           remote
-git-fetch-pack                          synchingrepositories
-git-filter-branch                       ancillarymanipulators
-git-fmt-merge-msg                       purehelpers
-git-for-each-ref                        plumbinginterrogators
-git-format-patch                        mainporcelain
-git-fsck                                ancillaryinterrogators          complete
-git-gc                                  mainporcelain
-git-get-tar-commit-id                   plumbinginterrogators
-git-grep                                mainporcelain           info
-git-gui                                 mainporcelain
-git-hash-object                         plumbingmanipulators
-git-help                                ancillaryinterrogators          complete
-git-http-backend                        synchingrepositories
-git-http-fetch                          synchelpers
-git-http-push                           synchelpers
+git-pack-refs                           ancillarymanipulators
+git-cvsimport                           foreignscminterface
+git-cvsserver                           foreignscminterface
+git-cvsexportcommit                     foreignscminterface
+git-svn                                 foreignscminterface
+git-p4                                  foreignscminterface
+git-quiltimport                         foreignscminterface
+git-archimport                          foreignscminterface
 git-imap-send                           foreignscminterface
-git-index-pack                          plumbingmanipulators
-git-init                                mainporcelain           init
-git-instaweb                            ancillaryinterrogators          complete
-git-interpret-trailers                  purehelpers
-gitk                                    mainporcelain
-git-log                                 mainporcelain           info
-git-ls-files                            plumbinginterrogators
-git-ls-remote                           plumbinginterrogators
-git-ls-tree                             plumbinginterrogators
-git-mailinfo                            purehelpers
-git-mailsplit                           purehelpers
-git-merge                               mainporcelain           history
-git-merge-base                          plumbinginterrogators
+git-apply                               plumbingmanipulators            complete
 git-merge-file                          plumbingmanipulators
-git-merge-index                         plumbingmanipulators
-git-merge-one-file                      purehelpers
-git-mergetool                           ancillarymanipulators           complete
-git-merge-tree                          ancillaryinterrogators
-git-multi-pack-index                    plumbingmanipulators
 git-mktag                               plumbingmanipulators
+git-hash-object                         plumbingmanipulators
+git-update-ref                          plumbingmanipulators
+git-symbolic-ref                        plumbingmanipulators
+git-commit-tree                         plumbingmanipulators
+git-commit-graph                        plumbingmanipulators
 git-mktree                              plumbingmanipulators
-git-mv                                  mainporcelain           worktree
-git-name-rev                            plumbinginterrogators
-git-notes                               mainporcelain
-git-p4                                  foreignscminterface
 git-pack-objects                        plumbingmanipulators
-git-pack-redundant                      plumbinginterrogators
-git-pack-refs                           ancillarymanipulators
+git-unpack-objects                      plumbingmanipulators
+git-index-pack                          plumbingmanipulators
+git-multi-pack-index                    plumbingmanipulators
+git-blame                               ancillaryinterrogators          complete
+git-annotate                            ancillaryinterrogators
+git-instaweb                            ancillaryinterrogators          complete
+git-rerere                              ancillaryinterrogators
+git-fsck                                ancillaryinterrogators          complete
+git-whatchanged                         ancillaryinterrogators          complete
+git-difftool                            ancillaryinterrogators          complete
+git-merge-tree                          ancillaryinterrogators
+git-count-objects                       ancillaryinterrogators
+git-verify-commit                       ancillaryinterrogators
+git-verify-tag                          ancillaryinterrogators
+git-send-pack                           synchingrepositories
+git-fetch-pack                          synchingrepositories
 git-parse-remote                        synchelpers
-git-patch-id                            purehelpers
-git-prune                               ancillarymanipulators
-git-prune-packed                        plumbingmanipulators
-git-pull                                mainporcelain           remote
-git-push                                mainporcelain           remote
-git-quiltimport                         foreignscminterface
-git-range-diff                          mainporcelain
-git-read-tree                           plumbingmanipulators
-git-rebase                              mainporcelain           history
 git-receive-pack                        synchelpers
-git-reflog                              ancillarymanipulators           complete
-git-remote                              ancillarymanipulators           complete
-git-repack                              ancillarymanipulators           complete
-git-replace                             ancillarymanipulators           complete
-git-request-pull                        foreignscminterface             complete
-git-rerere                              ancillaryinterrogators
-git-reset                               mainporcelain           worktree
-git-revert                              mainporcelain
+git-upload-pack                         synchelpers
+git-upload-archive                      synchelpers
+git-http-fetch                          synchelpers
+git-http-push                           synchelpers
+git-var                                 plumbinginterrogators
 git-rev-list                            plumbinginterrogators
 git-rev-parse                           plumbinginterrogators
-git-rm                                  mainporcelain           worktree
-git-send-email                          foreignscminterface             complete
-git-send-pack                           synchingrepositories
-git-shell                               synchelpers
-git-shortlog                            mainporcelain
-git-show                                mainporcelain           info
-git-show-branch                         ancillaryinterrogators          complete
-git-show-index                          plumbinginterrogators
+git-for-each-ref                        plumbinginterrogators
 git-show-ref                            plumbinginterrogators
-git-sh-i18n                             purehelpers
+git-ls-remote                           plumbinginterrogators
+git-diff-tree                           plumbinginterrogators
+git-diff-index                          plumbinginterrogators
+git-merge-base                          plumbinginterrogators
+git-verify-pack                         plumbinginterrogators
+git-pack-redundant                      plumbinginterrogators
+git-unpack-file                         plumbinginterrogators
+git-show-index                          plumbinginterrogators
+git-get-tar-commit-id                   plumbinginterrogators
+git-merge-one-file                      purehelpers
 git-sh-setup                            purehelpers
-git-stash                               mainporcelain
-git-stage                                                               complete
-git-status                              mainporcelain           info
+git-check-ref-format                    purehelpers
+git-check-ignore                        purehelpers
+git-check-attr                          purehelpers
+git-credential                          purehelpers
+git-credential-cache                    purehelpers
+git-credential-store                    purehelpers
+git-fmt-merge-msg                       purehelpers
+git-check-mailmap                       purehelpers
+git-mailsplit                           purehelpers
+git-mailinfo                            purehelpers
+git-interpret-trailers                  purehelpers
+git-column                              purehelpers
 git-stripspace                          purehelpers
-git-submodule                           mainporcelain
-git-svn                                 foreignscminterface
-git-symbolic-ref                        plumbingmanipulators
-git-tag                                 mainporcelain           history
-git-unpack-file                         plumbinginterrogators
-git-unpack-objects                      plumbingmanipulators
-git-update-index                        plumbingmanipulators
-git-update-ref                          plumbingmanipulators
-git-update-server-info                  synchingrepositories
-git-upload-archive                      synchelpers
-git-upload-pack                         synchelpers
-git-var                                 plumbinginterrogators
-git-verify-commit                       ancillaryinterrogators
-git-verify-pack                         plumbinginterrogators
-git-verify-tag                          ancillaryinterrogators
-gitweb                                  ancillaryinterrogators
-git-whatchanged                         ancillaryinterrogators          complete
-git-worktree                            mainporcelain
-git-write-tree                          plumbingmanipulators
-gitattributes                           guide
-gitcli                                  guide
-gitcore-tutorial                        guide
-gitcvs-migration                        guide
-gitdiffcore                             guide
-giteveryday                             guide
-gitglossary                             guide
-githooks                                guide
-gitignore                               guide
-gitmodules                              guide
-gitnamespaces                           guide
-gitrepository-layout                    guide
-gitrevisions                            guide
-gittutorial-2                           guide
-gittutorial                             guide
-gitworkflows                            guide
+git-patch-id                            purehelpers
+git-sh-i18n                             purehelpers
