On 21/10/2021 18:45, Ævar Arnfjörð Bjarmason wrote:
E.g. the "-n" option to "git fetch" comes to mind, which isn't
a synonym for "--dry-run", as in most other places.
-n
is only used very few times for dry run. I found
git add
git rm
git mv
But
cherry-pick => no commit
pull => no stat
rebase => no stat
merge => no stat
fetch => no tags
clone => no checkout
In any case, "-n" has always a "no" meaning (even dry run, mean "no
changes to be recorded").
So IMHO -n is a really bad idea for "new"
About "-b" branch:
That does give no indication something is created. I find it highly
confusing for checkout already,
because the word "branch" could also mean "check out to existing branch"
rather than doing a detached checkout.
However, others may be perfectly fine with -b only referring to branches
that will be created.
-c of course is also used for config in clone.... :)
If 2 letters could be used, then -c could be given twice for "create copy"
-c => create
-c -c => create copy
-cc => create copy
----------
Also, will move/copy for switch actually be the same as for "git branch"?
I haven't used them, but from the docs, I take it that a
[new/replacement] branch will be created, and this branches tip points
to the same commit as the origin branch.
But in "git switch" a new commit for the top is given. So that differs.
Maybe someone can educate me ?
- For move, where is the diff between
git switch --move existing_branch commit
git switch --force-create existing_branch commit
Afaik only that the reflog will be copied/kept?
For copy what does it mean at all?
git switch --copy existing_branch commit
Does not make any sense at all.
Because "copy" means that "existing_branch" is to be kept. So copy needs
a name for the new branch.
I see 2 possible copies
git switch --copy existing_branch new_branch commit
git switch --copy existing_branch target_branch
For the latter, it switches to the existing "target_branch", but
replaces its reflog.
Unless there is more, than the copying of the reflog, wouldn't it be
better to add an option "--copy-reflog"
Then you could do
git switch --copy-reflog=branch target_branch # replace reflog of
existing target branch
git switch --copy-reflog=branch -c new_branch target_branch #
new_branch will get the reflog / this is "copy"
git switch --copy-reflog=branch -C new_branch target_branch #
new_branch will get the reflog
git switch --copy-reflog -C existing_branch target_branch #
existing_branch will keep the reflog. / this is "move"