<feed xmlns='http://www.w3.org/2005/Atom'>
<title>git/command-list.txt, branch v2.23.2</title>
<subtitle>Mirror of https://git.kernel.org/pub/scm/git/git.git/
</subtitle>
<id>https://git.shady.money/git/atom?h=v2.23.2</id>
<link rel='self' href='https://git.shady.money/git/atom?h=v2.23.2'/>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/'/>
<updated>2019-05-07T04:04:48Z</updated>
<entry>
<title>help: move git-diff and git-reset to different groups</title>
<updated>2019-05-07T04:04:48Z</updated>
<author>
<name>Nguyễn Thái Ngọc Duy</name>
<email>pclouds@gmail.com</email>
</author>
<published>2019-04-25T09:45:59Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=12358755949084392b1112cfb5cb4feb9935331f'/>
<id>urn:sha1:12358755949084392b1112cfb5cb4feb9935331f</id>
<content type='text'>
The third column in command-list.txt determines what group a common
command is printed in 'git help'.

"git reset" is currently in the "work on the current change (see also:
git help everyday)" group. While it's true that "git reset" can
manipulate the index and can be in this group, its unique
functionality is resetting HEAD, which should be the "grow, mark,
tweak history" group.

Moving it there will also avoid the confusion because both 'restore'
and 'reset' are in the same group, next to each other.

While looking at the 'group, mark, tweak history', I realize "git
diff" should not be there. All the commands in this group is about
_changing_ the commit history while "git diff" is a read-only
operation. It fits better in the "examine the history and state" group
(especially when "git status", its close friend, is already there).

This is what we have after the reorganization:

    work on the current change (see also: git help everyday)
       add       Add file contents to the index
       mv        Move or rename a file, a directory, or a symlink
       restore   Restore working tree files
       rm        Remove files from the working tree and from the index

    examine the history and state (see also: git help revisions)
       bisect    Use binary search to find the commit that introduced a bug
       diff      Show changes between commits, commit and working tree, etc
       grep      Print lines matching a pattern
       log       Show commit logs
       show      Show various types of objects
       status    Show the working tree status

    grow, mark and tweak your common history
       branch    List, create, or delete branches
       commit    Record changes to the repository
       merge     Join two or more development histories together
       rebase    Reapply commits on top of another base tip
       reset     Reset current HEAD to the specified state
       switch    Switch branches
       tag       Create, list, delete or verify a tag object signed with GPG

Signed-off-by: Nguyễn Thái Ngọc Duy &lt;pclouds@gmail.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>doc: promote "git restore"</title>
<updated>2019-05-07T04:04:48Z</updated>
<author>
<name>Nguyễn Thái Ngọc Duy</name>
<email>pclouds@gmail.com</email>
</author>
<published>2019-04-25T09:45:58Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=80f537f79c16efeb7b92b3409ede434a230b5679'/>
<id>urn:sha1:80f537f79c16efeb7b92b3409ede434a230b5679</id>
<content type='text'>
The new command "git restore" (together with "git switch") are added
to avoid the confusion of one-command-do-all "git checkout" for new
users. They are also helpful to avoid ambiguous context.

For these reasons, promote it everywhere possible. This includes
documentation, suggestions/advice from other commands.

One nice thing about git-restore is the ability to restore
"everything", so it can be used in "git status" advice instead of both
"git checkout" and "git reset".  The three commands suggested by "git
status" are add, rm and restore.

"git checkout" is also removed from "git help" (i.e. it's no longer
considered a commonly used command)

Signed-off-by: Nguyễn Thái Ngọc Duy &lt;pclouds@gmail.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>checkout: split part of it to new command 'restore'</title>
<updated>2019-05-07T04:04:47Z</updated>
<author>
<name>Nguyễn Thái Ngọc Duy</name>
<email>pclouds@gmail.com</email>
</author>
<published>2019-04-25T09:45:45Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=46e91b663badd99b3807ab34decfd32f3cbf15e7'/>
<id>urn:sha1:46e91b663badd99b3807ab34decfd32f3cbf15e7</id>
<content type='text'>
Previously the switching branch business of 'git checkout' becomes a
new command 'switch'. This adds the restore command for the checking
out paths path.

Similar to git-switch, a new man page is added to describe what the
command will become. The implementation will be updated shortly to
match the man page.

A couple main differences from 'git checkout &lt;paths&gt;':

- 'restore' by default will only update worktree. This matters more
  when --source is specified ('checkout &lt;tree&gt; &lt;paths&gt;' updates both
  worktree and index).

- 'restore --staged' can be used to restore the index. This command
  overlaps with 'git reset &lt;paths&gt;'.

- both worktree and index could also be restored at the same time
  (from a tree) when both --staged and --worktree are specified. This
  overlaps with 'git checkout &lt;tree&gt; &lt;paths&gt;'

- default source for restoring worktree and index is the index and
  HEAD respectively. A different (tree) source could be specified as
  with --source (*).

- when both index and worktree are restored, --source must be
  specified since the default source for these two individual targets
  are different (**)

- --no-overlay is enabled by default, if an entry is missing in the
  source, restoring means deleting the entry

(*) I originally went with --from instead of --source. I still think
  --from is a better name. The short option -f however is already
  taken by force. And I do think short option is good to have, e.g. to
  write -s@ or -s@^ instead of --source=HEAD.

(**) If you sit down and think about it, moving worktree's source from
  the index to HEAD makes sense, but nobody is really thinking it
  through when they type the commands.

Signed-off-by: Nguyễn Thái Ngọc Duy &lt;pclouds@gmail.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>checkout: split part of it to new command 'switch'</title>
<updated>2019-04-02T04:56:59Z</updated>
<author>
<name>Nguyễn Thái Ngọc Duy</name>
<email>pclouds@gmail.com</email>
</author>
<published>2019-03-29T10:39:05Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=d787d311dbd7a4104a9dde23b90ae24528a15cf9'/>
<id>urn:sha1:d787d311dbd7a4104a9dde23b90ae24528a15cf9</id>
<content type='text'>
"git checkout" doing too many things is a source of confusion for many
users (and it even bites old timers sometimes). To remedy that, the
command will be split into two new ones: switch and restore. The good
old "git checkout" command is still here and will be until all (or most
of users) are sick of it.

See the new man page for the final design of switch. The actual
implementation though is still pretty much the same as "git checkout"
and not completely aligned with the man page. Following patches will
adjust their behavior to match the man page.

Signed-off-by: Nguyễn Thái Ngọc Duy &lt;pclouds@gmail.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'du/cherry-is-plumbing'</title>
<updated>2018-10-26T05:22:14Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2018-10-26T05:22:14Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=eff5d693ad5ff28daf2244ce2618896e87cccb2b'/>
<id>urn:sha1:eff5d693ad5ff28daf2244ce2618896e87cccb2b</id>
<content type='text'>
Doc update to mark "git cherry" as a plumbing command.

* du/cherry-is-plumbing:
  doc: move git-cherry to plumbing
</content>
</entry>
<entry>
<title>Merge branch 'du/get-tar-commit-id-is-plumbing'</title>
<updated>2018-10-26T05:22:12Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2018-10-26T05:22:12Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=46307e346cd396fcaec7eaad853916f9059a92d9'/>
<id>urn:sha1:46307e346cd396fcaec7eaad853916f9059a92d9</id>
<content type='text'>
Doc update to mark "git get-tar-commit-id" as a plumbing command.

* du/get-tar-commit-id-is-plumbing:
  doc: move git-get-tar-commit-id to plumbing
</content>
</entry>
<entry>
<title>Merge branch 'du/rev-parse-is-plumbing'</title>
<updated>2018-10-26T05:22:12Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2018-10-26T05:22:11Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=7db60837be0c38040efe47e9459cfb6da3bc5927'/>
<id>urn:sha1:7db60837be0c38040efe47e9459cfb6da3bc5927</id>
<content type='text'>
Doc update.

* du/rev-parse-is-plumbing:
  doc: move git-rev-parse from porcelain to plumbing
</content>
</entry>
<entry>
<title>doc: move git-cherry to plumbing</title>
<updated>2018-10-11T23:26:49Z</updated>
<author>
<name>Daniels Umanovskis</name>
<email>daniels@umanovskis.se</email>
</author>
<published>2018-10-11T18:33:50Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=61018fe9e005a54e18184481927519d64035220a'/>
<id>urn:sha1:61018fe9e005a54e18184481927519d64035220a</id>
<content type='text'>
Also remove git-cherry from Bash completion because plumbing
commands do not belong there.

Signed-off-by: Daniels Umanovskis &lt;daniels@umanovskis.se&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>doc: move git-get-tar-commit-id to plumbing</title>
<updated>2018-10-11T23:26:37Z</updated>
<author>
<name>Daniels Umanovskis</name>
<email>daniels@umanovskis.se</email>
</author>
<published>2018-10-11T18:39:32Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=ce366a8144cff5b7d00a944f5014c4425207e568'/>
<id>urn:sha1:ce366a8144cff5b7d00a944f5014c4425207e568</id>
<content type='text'>
This is definitely a low-level command, it's hard to argue
against it belonging in plumbing.

Signed-off-by: Daniels Umanovskis &lt;daniels@umanovskis.se&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>doc: move git-rev-parse from porcelain to plumbing</title>
<updated>2018-10-11T06:56:26Z</updated>
<author>
<name>Daniels Umanovskis</name>
<email>daniels@umanovskis.se</email>
</author>
<published>2018-10-10T21:37:26Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=ac1f98a0dfe3b194f67c41d79ef47af3019dd86a'/>
<id>urn:sha1:ac1f98a0dfe3b194f67c41d79ef47af3019dd86a</id>
<content type='text'>
git-rev-parse mostly seems like plumbing, and is more usd in
scripts than in regular use. Online it's often mentioned as
a plumbing command. Nonetheless it's listed under porcelain
interrogators in `man git`. It seems appropriate to formally
move git-rev-parse to plumbing interrogators.

Signed-off-by: Daniels Umanovskis &lt;daniels@umanovskis.se&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
</feed>
