-
-
Notifications
You must be signed in to change notification settings - Fork 17
/
Copy pathdescriptions.json
2300 lines (2300 loc) · 145 KB
/
descriptions.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
[
{
"command_name": "pull",
"enabled": true,
"options": [
{
"argument": "--quiet",
"arguments": "-q, --quiet",
"description": "This is passed to both underlying git-fetch to squelch reporting of during transfer, and underlying git-merge to squelch output during merging."
},
{
"argument": "--verbose",
"arguments": "-v, --verbose",
"description": "Pass --verbose to git-fetch and git-merge."
},
{
"argument": "--recurse-submodules[=yes|on-demand|no]",
"arguments": "--recurse-submodules[=yes|on-demand|no]",
"description": "This option controls if new commits of all populated submodules should be fetched too."
},
{
"argument": "--no-recurse-submodules[=yes|on-demand|no]",
"arguments": "--no-recurse-submodules[=yes|on-demand|no]",
"description": "This option controls if new commits of all populated submodules should be fetched too."
},
{
"argument": "--commit",
"arguments": "--commit",
"description": "Perform the merge and commit the result.\nThis option can be used to override --no-commit."
},
{
"argument": "--no-commit",
"arguments": "--no-commit",
"description": "With --no-commit perform the merge but pretend the merge failed and do not autocommit, to give the user a chance to inspect and further tweak the merge result before committing."
},
{
"argument": "--edit",
"arguments": "--edit, -e",
"description": "Invoke an editor before committing successful mechanical merge to further edit the auto-generated merge message, so that the user can explain and justify the merge."
},
{
"argument": "--no-edit",
"arguments": "--no-edit",
"description": "The --no-edit option can be used to accept the auto-generated message (this is generally discouraged)."
},
{
"argument": "--ff",
"arguments": "--ff",
"description": "When the merge resolves as a fast-forward, only update the branch pointer, without creating a merge commit.\nThis is the default behavior."
},
{
"argument": "--no-ff",
"arguments": "--no-ff",
"description": "Create a merge commit even when the merge resolves as a fast-forward.\nThis is the default behaviour when merging an annotated (and possibly signed) tag."
},
{
"argument": "--ff-only",
"arguments": "--ff-only",
"description": "Refuse to merge and exit with a non-zero status unless the current HEAD is already up-to-date or the merge can be resolved as a fast-forward."
},
{
"argument": "--log[=<n>]",
"arguments": "--log[=<n>]",
"description": "In addition to branch names, populate the log message with one-line descriptions from at most <n> actual commits that are being merged.\nSee also git-fmt-merge-msg(1)."
},
{
"argument": "--no-log",
"arguments": "--no-log",
"description": "With --no-log do not list one-line descriptions from the actual commits being merged."
},
{
"argument": "--stat",
"arguments": "--stat",
"description": "Show a diffstat at the end of the merge.\nThe diffstat is also controlled by the configuration option merge.stat."
},
{
"argument": "--no-stat",
"arguments": "-n, --no-stat",
"description": "With -n or --no-stat do not show a diffstat at the end of the merge."
},
{
"argument": "--squash",
"arguments": "--squash",
"description": "Produce the working tree and index state as if a real merge happened (except for the merge information), but do not actually make a commit, move the HEAD, or record $GIT_DIR/MERGE_HEAD (to cause the next git commit command to create a merge commit).\nThis allows you to create a single commit on top of the current branch whose effect is the same as merging another branch (or more in case of an octopus)."
},
{
"argument": "--no-squash",
"arguments": "--no-squash",
"description": "With --no-squash perform the merge and commit the result.\nThis option can be used to override --squash."
},
{
"argument": "--strategy=<strategy>",
"arguments": "-s <strategy>, --strategy=<strategy>",
"description": "Use the given merge strategy; can be supplied more than once to specify them in the order they should be tried.\nIf there is no -s option, a built-in list of strategies is used instead (git merge-recursive when merging a single head, git merge-octopus otherwise)."
},
{
"argument": "--strategy-option=<option>",
"arguments": "-X <option>, --strategy-option=<option>",
"description": "Pass merge strategy specific option through to the merge strategy."
},
{
"argument": "--verify-signatures",
"arguments": "--verify-signatures",
"description": "Verify that the tip commit of the side branch being merged is signed with a valid key, i.e. a key that has a valid uid: in the default trust model, this means the signing key has been signed by a trusted key."
},
{
"argument": "--no-verify-signatures",
"arguments": "--no-verify-signatures",
"description": "Verify that the tip commit of the side branch being merged is signed with a valid key, i.e. a key that has a valid uid: in the default trust model, this means the signing key has been signed by a trusted key."
},
{
"argument": "--allow-unrelated-histories",
"arguments": "--allow-unrelated-histories",
"description": "By default, git merge command refuses to merge histories that do not share a common ancestor.\nThis option can be used to override this safety when merging histories of two projects that started their lives independently.\nAs that is a very rare occasion, no configuration variable to enable this by default exists and will not be added."
},
{
"argument": "--rebase[=false|true|preserve|interactive]",
"arguments": "-r, --rebase[=false|true|preserve|interactive]",
"description": "When true, rebase the current branch on top of the upstream branch after fetching.\nIf there is a remote-tracking branch corresponding to the upstream branch and the upstream branch was rebased since last fetched, the rebase uses that information to avoid rebasing non-local changes."
},
{
"argument": "--no-rebase",
"arguments": "--no-rebase",
"description": "Override earlier --rebase."
},
{
"argument": "--autostash",
"arguments": "--autostash",
"description": "Before starting rebase, stash local modifications away if needed, and apply the stash when done."
},
{
"argument": "--no-autostash",
"arguments": "--no-autostash",
"description": "--no-autostash is useful to override the rebase.autoStash configuration variable."
},
{
"argument": "--all",
"arguments": "--all",
"description": "Fetch all remotes."
},
{
"argument": "--append",
"arguments": "-a, --append",
"description": "Append ref names and object names of fetched refs to the existing contents of .git/FETCH_HEAD.\nWithout this option old data in .git/FETCH_HEAD will be overwritten."
},
{
"argument": "--depth=<depth>",
"arguments": "--depth=<depth>",
"description": "Limit fetching to the specified number of commits from the tip of each remote branch history.\nIf fetching to a shallow repository created by git clone with --depth=<depth> option (see git-clone(1)), deepen or shorten the history to the specified number of commits.\nTags for the deepened commits are not fetched."
},
{
"argument": "--deepen=<depth>",
"arguments": "--deepen=<depth>",
"description": "Similar to --depth, except it specifies the number of commits from the current shallow boundary instead of from the tip of each remote branch history."
},
{
"argument": "--shallow-since=<date>",
"arguments": "--shallow-since=<date>",
"description": "Deepen or shorten the history of a shallow repository to include all reachable commits after <date>."
},
{
"argument": "--shallow-exclude=<revision>",
"arguments": "--shallow-exclude=<revision>",
"description": "Deepen or shorten the history of a shallow repository to exclude commits reachable from a specified remote branch or tag.\nThis option can be specified multiple times."
},
{
"argument": "--unshallow",
"arguments": "--unshallow",
"description": "If the source repository is complete, convert a shallow repository to a complete one, removing all the limitations imposed by shallow repositories.\nIf the source repository is shallow, fetch as much as possible so that the current repository has the same history as the source repository."
},
{
"argument": "--update-shallow",
"arguments": "--update-shallow",
"description": "By default when fetching from a shallow repository, git fetch refuses refs that require updating .git/shallow.\nThis option updates .git/shallow and accept such refs."
},
{
"argument": "--force",
"arguments": "-f, --force",
"description": "When git fetch is used with <rbranch>:<lbranch> refspec, it refuses to update the local branch <lbranch> unless the remote branch <rbranch> it fetches is a descendant of <lbranch>.\nThis option overrides that check."
},
{
"argument": "--keep",
"arguments": "-k, --keep",
"description": "Keep downloaded pack."
},
{
"argument": "--no-tags",
"arguments": "--no-tags",
"description": "By default, tags that point at objects that are downloaded from the remote repository are fetched and stored locally.\nThis option disables this automatic tag following.\nThe default behavior for a remote may be specified with the remote.<name>.tagOpt setting."
},
{
"argument": "--update-head-ok",
"arguments": "-u, --update-head-ok",
"description": "By default git fetch refuses to update the head which corresponds to the current branch.\nThis flag disables the check.\nThis is purely for the internal use for git pull to communicate with git fetch, and unless you are implementing your own Porcelain you are not supposed to use it."
},
{
"argument": "--upload-pack <upload-pack>",
"arguments": "--upload-pack <upload-pack>",
"description": "When given, and the repository to fetch from is handled by git fetch-pack, --exec=<upload-pack> is passed to the command to specify non-default path for the command run on the other end."
},
{
"argument": "--progress",
"arguments": "--progress",
"description": "Progress status is reported on the standard error stream by default when it is attached to a terminal, unless -q is specified.\nThis flag forces progress status even if the standard error stream is not directed to a terminal."
},
{
"argument": "--ipv4",
"arguments": "-4, --ipv4",
"description": "Use IPv4 addresses only, ignoring IPv6 addresses."
},
{
"argument": "--ipv6",
"arguments": "-6, --ipv6",
"description": "Use IPv6 addresses only, ignoring IPv4 addresses."
}
]
},
{
"command_name": "fetch",
"enabled": true,
"options": [
{
"argument": "--all",
"arguments": "--all",
"description": "Fetch all remotes."
},
{
"argument": "--append",
"arguments": "-a, --append",
"description": "Append ref names and object names of fetched refs to the existing contents of .git/FETCH_HEAD.\nWithout this option old data in .git/FETCH_HEAD will be overwritten."
},
{
"argument": "--depth=<depth>",
"arguments": "--depth=<depth>",
"description": "Limit fetching to the specified number of commits from the tip of each remote branch history.\nIf fetching to a shallow repository created by git clone with --depth=<depth> option (see git-clone(1)), deepen or shorten the history to the specified number of commits.\nTags for the deepened commits are not fetched."
},
{
"argument": "--deepen=<depth>",
"arguments": "--deepen=<depth>",
"description": "Similar to --depth, except it specifies the number of commits from the current shallow boundary instead of from the tip of each remote branch history."
},
{
"argument": "--shallow-since=<date>",
"arguments": "--shallow-since=<date>",
"description": "Deepen or shorten the history of a shallow repository to include all reachable commits after <date>."
},
{
"argument": "--shallow-exclude=<revision>",
"arguments": "--shallow-exclude=<revision>",
"description": "Deepen or shorten the history of a shallow repository to exclude commits reachable from a specified remote branch or tag.\nThis option can be specified multiple times."
},
{
"argument": "--unshallow",
"arguments": "--unshallow",
"description": "If the source repository is complete, convert a shallow repository to a complete one, removing all the limitations imposed by shallow repositories.\nIf the source repository is shallow, fetch as much as possible so that the current repository has the same history as the source repository."
},
{
"argument": "--update-shallow",
"arguments": "--update-shallow",
"description": "By default when fetching from a shallow repository, git fetch refuses refs that require updating .git/shallow.\nThis option updates .git/shallow and accept such refs."
},
{
"argument": "--dry-run",
"arguments": "--dry-run",
"description": "Show what would be done, without making any changes."
},
{
"argument": "--force",
"arguments": "-f, --force",
"description": "When git fetch is used with <rbranch>:<lbranch> refspec, it refuses to update the local branch <lbranch> unless the remote branch <rbranch> it fetches is a descendant of <lbranch>.\nThis option overrides that check."
},
{
"argument": "--keep",
"arguments": "-k, --keep",
"description": "Keep downloaded pack."
},
{
"argument": "--multiple",
"arguments": "--multiple",
"description": "Allow several <repository> and <group> arguments to be specified.\nNo <refspec>s may be specified."
},
{
"argument": "--prune",
"arguments": "-p, --prune",
"description": "Before fetching, remove any remote-tracking references that no longer exist on the remote."
},
{
"argument": "--no-tags",
"arguments": "-n, --no-tags",
"description": "By default, tags that point at objects that are downloaded from the remote repository are fetched and stored locally.\nThis option disables this automatic tag following.\nThe default behavior for a remote may be specified with the remote.<name>.tagOpt setting."
},
{
"argument": "--refmap=<refspec>",
"arguments": "--refmap=<refspec>",
"description": "When fetching refs listed on the command line, use the specified refspec (can be given more than once) to map the refs to remote-tracking branches, instead of the values of remote.*.fetch configuration variables for the remote repository."
},
{
"argument": "--tags",
"arguments": "-t, --tags",
"description": "Fetch all tags from the remote (i.e., fetch remote tags refs/tags/* into local tags with the same name), in addition to whatever else would otherwise be fetched."
},
{
"argument": "--recurse-submodules[=yes|on-demand|no]",
"arguments": "--recurse-submodules[=yes|on-demand|no]",
"description": "This option controls if and under what conditions new commits of populated submodules should be fetched too."
},
{
"argument": "--jobs=<n>",
"arguments": "-j, --jobs=<n>",
"description": "Number of parallel children to be used for fetching submodules.\nEach will fetch from different submodules, such that fetching many submodules will be faster.\nBy default submodules will be fetched one at a time."
},
{
"argument": "--no-recurse-submodules",
"arguments": "--no-recurse-submodules",
"description": "Disable recursive fetching of submodules (this has the same effect as using the --recurse-submodules=no option)."
},
{
"argument": "--submodule-prefix=<path>",
"arguments": "--submodule-prefix=<path>",
"description": "Prepend <path> to paths printed in informative messages."
},
{
"argument": "--recurse-submodules-default=[yes|on-demand]",
"arguments": "--recurse-submodules-default=[yes|on-demand]",
"description": "This option is used internally to temporarily provide a non-negative default value for the --recurse-submodules option.\nAll other methods of configuring fetch’s submodule recursion (such as settings in gitmodules(5) and git-config(1)) override this option, as does specifying --[no-]recurse-submodules directly."
},
{
"argument": "--update-head-ok",
"arguments": "-u, --update-head-ok",
"description": "By default git fetch refuses to update the head which corresponds to the current branch.\nThis flag disables the check.\nThis is purely for the internal use for git pull to communicate with git fetch, and unless you are implementing your own Porcelain you are not supposed to use it."
},
{
"argument": "--upload-pack <upload-pack>",
"arguments": "--upload-pack <upload-pack>",
"description": "When given, and the repository to fetch from is handled by git fetch-pack, --exec=<upload-pack> is passed to the command to specify non-default path for the command run on the other end."
},
{
"argument": "--quiet",
"arguments": "-q, --quiet",
"description": "Pass --quiet to git-fetch-pack and silence any other internally used git commands.\nProgress is not reported to the standard error stream."
},
{
"argument": "--verbose",
"arguments": "-v, --verbose",
"description": "Be verbose."
},
{
"argument": "--progress",
"arguments": "--progress",
"description": "Progress status is reported on the standard error stream by default when it is attached to a terminal, unless -q is specified.\nThis flag forces progress status even if the standard error stream is not directed to a terminal."
},
{
"argument": "--ipv4",
"arguments": "-4, --ipv4",
"description": "Use IPv4 addresses only, ignoring IPv6 addresses."
},
{
"argument": "--ipv6",
"arguments": "-6, --ipv6",
"description": "Use IPv6 addresses only, ignoring IPv4 addresses."
}
]
},
{
"command_name": "init",
"enabled": true,
"options": [
{
"argument": "--quiet",
"arguments": "-q, --quiet",
"description": "Only print error and warning messages; all other output will be suppressed."
},
{
"argument": "--bare",
"arguments": "--bare",
"description": "Create a bare repository.\nIf GIT_DIR environment is not set, it is set to the current working directory."
},
{
"argument": "--template=<template_directory>",
"arguments": "--template=<template_directory>",
"description": "Specify the directory from which templates will be used.\n(See the 'TEMPLATE DIRECTORY' section below.)"
},
{
"argument": "--separate-git-dir=<git dir>",
"arguments": "--separate-git-dir=<git dir>",
"description": "Instead of initializing the repository as a directory to either $GIT_DIR or ./.git/, create a text file there containing the path to the actual repository.\nThis file acts as filesystem-agnostic Git symbolic link to the repository."
},
{
"argument": "--shared[=(false|true|umask|group|all|world|everybody|0xxx)]",
"arguments": "--shared[=(false|true|umask|group|all|world|everybody|0xxx)]",
"description": "Specify that the Git repository is to be shared amongst several users.\nThis allows users belonging to the same group to push into that repository.\nWhen specified, the config variable 'core.sharedRepository' is set so that files and directories under $GIT_DIR are created with the requested permissions.\nWhen not specified, Git will use permissions reported by umask(2)."
}
]
},
{
"command_name": "rebase",
"enabled": true,
"options": [
{
"argument": "--onto <newbase>",
"arguments": "--onto <newbase>",
"description": "Starting point at which to create the new commits.\nIf the --onto option is not specified, the starting point is <upstream>.\nMay be any valid commit, and not just an existing branch name.\nAs a special case, you may use \"A...B\" as a shortcut for the merge base of A and B if there is exactly one merge base.\nYou can leave out at most one of A and B, in which case it defaults to HEAD."
},
{
"argument": "--keep-base",
"arguments": "--keep-base",
"description": "Set the starting point at which to create the new commits to the merge base of <upstream> <branch>.\nRunning git rebase --keep-base <upstream> <branch> is equivalent to running git rebase --onto <upstream>... <upstream>.\n\nThis option is useful in the case where one is developing a feature on top of an upstream branch.\nWhile the feature is being worked on, the upstream branch may advance and it may not be the best idea to keep rebasing on top of the upstream but to keep the base commit as-is.\n\nAlthough both this option and --fork-point find the merge base between <upstream> and <branch>, this option uses the merge base as the starting point on which new commits will be created, whereas --fork-point uses the merge base to determine the set of commits which will be rebased."
},
{
"argument": "--continue",
"arguments": "--continue",
"description": "Restart the rebasing process after having resolved a merge conflict."
},
{
"argument": "--abort",
"arguments": "--abort",
"description": "Abort the rebase operation and reset HEAD to the original branch.\nIf <branch> was provided when the rebase operation was started, then HEAD will be reset to <branch>.\nOtherwise HEAD will be reset to where it was when the rebase operation was started."
},
{
"argument": "--quit",
"arguments": "--quit",
"description": "Abort the rebase operation but HEAD is not reset back to the original branch.\nThe index and working tree are also left unchanged as a result.\nIf a temporary stash entry was created using --autostash, it will be saved to the stash list."
},
{
"argument": "--apply",
"arguments": "--apply",
"description": "Use applying strategies to rebase (calling git-am internally).\nThis option may become a no-op in the future once the merge backend handles everything the apply one does."
},
{
"argument": "--empty=(drop|keep|ask)",
"arguments": "--empty={drop,keep,ask}",
"description": "How to handle commits that are not empty to start and are not clean cherry-picks of any upstream commit, but which become empty after rebasing (because they contain a subset of already upstream changes).\nWith drop (the default), commits that become empty are dropped.\nWith keep, such commits are kept.\nWith ask (implied by --interactive), the rebase will halt when an empty commit is applied allowing you to choose whether to drop it, edit files more, or just commit the empty changes.\nOther options, like --exec, will use the default of drop unless -i/--interactive is explicitly specified.\n\nNote that commits which start empty are kept (unless --no-keep-empty is specified), and commits which are clean cherry-picks (as determined by git log --cherry-mark ...) are detected and dropped as a preliminary step (unless --reapply-cherry-picks is passed)."
},
{
"argument": "--no-keep-empty",
"arguments": "--no-keep-empty, --keep-empty",
"description": "Do not keep commits that start empty before the rebase (i.e. that do not change anything from its parent) in the result.\nThe default is to keep commits which start empty, since creating such commits requires passing the --allow-empty override flag to git commit, signifying that a user is very intentionally creating such a commit and thus wants to keep it.\n\nUsage of this flag will probably be rare, since you can get rid of commits that start empty by just firing up an interactive rebase and removing the lines corresponding to the commits you don’t want.\nThis flag exists as a convenient shortcut, such as for cases where\nexternal tools generate many empty commits and you want them all removed.\n\nFor commits which do not start empty but become empty after rebasing, see the --empty flag."
},
{
"argument": "--keep-empty",
"arguments": "--no-keep-empty, --keep-empty",
"description": "Do not keep commits that start empty before the rebase (i.e. that do not change anything from its parent) in the result.\nThe default is to keep commits which start empty, since creating such commits requires passing the --allow-empty override flag to git commit, signifying that a user is very intentionally creating such a commit and thus wants to keep it.\n\nUsage of this flag will probably be rare, since you can get rid of commits that start empty by just firing up an interactive rebase and removing the lines corresponding to the commits you don’t want.\nThis flag exists as a convenient shortcut, such as for cases where\nexternal tools generate many empty commits and you want them all removed.\n\nFor commits which do not start empty but become empty after rebasing, see the --empty flag."
},
{
"argument": "--reapply-cherry-picks",
"arguments": "--reapply-cherry-picks, --no-reapply-cherry-picks",
"description": "Reapply all clean cherry-picks of any upstream commit instead of preemptively dropping them.\n(If these commits then become empty after rebasing, because they contain a subset of already upstream changes, the behavior towards them is controlled by the --empty flag.)\n\nBy default (or if --no-reapply-cherry-picks is given), these commits will be automatically dropped.\nBecause this necessitates reading all upstream commits, this can be expensive in repos with a large number of upstream commits that need to be read.\nWhen using the merge backend, warnings will be issued for each dropped commit (unless --quiet is given).\nAdvice will also be issued unless advice.skippedCherryPicks is set to false (see git-config(1)).\n--reapply-cherry-picks allows rebase to forgo reading all upstream commits, potentially improving performance."
},
{
"argument": "--no-reapply-cherry-picks",
"arguments": "--reapply-cherry-picks, --no-reapply-cherry-picks",
"description": "Reapply all clean cherry-picks of any upstream commit instead of preemptively dropping them.\n(If these commits then become empty after rebasing, because they contain a subset of already upstream changes, the behavior towards them is controlled by the --empty flag.)\n\nBy default (or if --no-reapply-cherry-picks is given), these commits will be automatically dropped.\nBecause this necessitates reading all upstream commits, this can be expensive in repos with a large number of upstream commits that need to be read.\nWhen using the merge backend, warnings will be issued for each dropped commit (unless --quiet is given).\nAdvice will also be issued unless advice.skippedCherryPicks is set to false (see git-config(1)).\n--reapply-cherry-picks allows rebase to forgo reading all upstream commits, potentially improving performance."
},
{
"argument": "--allow-empty-message",
"arguments": "--allow-empty-message",
"description": "No-op.\nRebasing commits with an empty message used to fail and this option would override that behavior, allowing commits with empty messages to be rebased.\nNow commits with an empty message do not cause rebasing to halt."
},
{
"argument": "--skip",
"arguments": "--skip",
"description": "Restart the rebasing process by skipping the current patch."
},
{
"argument": "--edit-todo",
"arguments": "--edit-todo",
"description": "Edit the todo list during an interactive rebase."
},
{
"argument": "--show-current-patch",
"arguments": "--show-current-patch",
"description": "Show the current patch in an interactive rebase or when rebase is stopped because of conflicts.\nThis is the equivalent of git show REBASE_HEAD."
},
{
"argument": "--merge",
"arguments": "-m, --merge",
"description": "Using merging strategies to rebase (default).\n\nNote that a rebase merge works by replaying each commit from the working branch on top of the <upstream> branch.\nBecause of this, when a merge conflict happens, the side reported as ours is the so-far rebased series, starting with <upstream>, and theirs is the working branch.\nIn other words, the sides are swapped."
},
{
"argument": "--strategy=<strategy>",
"arguments": "-s <strategy>, --strategy=<strategy>",
"description": "Use the given merge strategy, instead of the default ort.\nThis implies --merge.\n\nBecause git rebase replays each commit from the working branch on top of the <upstream> branch using the given strategy, using the ours strategy simply empties all patches from the <branch>, which makes little sense."
},
{
"argument": "--strategy-option=<strategy-option>",
"arguments": "-X <strategy-option>, --strategy-option=<strategy-option>",
"description": "Pass the <strategy-option> through to the merge strategy.\nThis implies --merge and, if no strategy has been specified, -s ort.\nNote the reversal of ours and theirs as noted above for the -m option."
},
{
"argument": "--rerere-autoupdate",
"arguments": "--rerere-autoupdate, --no-rerere-autoupdate",
"description": "Allow the rerere mechanism to update the index with the result of auto-conflict resolution if possible."
},
{
"argument": "--no-rerere-autoupdate",
"arguments": "--rerere-autoupdate, --no-rerere-autoupdate",
"description": "Allow the rerere mechanism to update the index with the result of auto-conflict resolution if possible."
},
{
"argument": "--gpg-sign[=<keyID>]",
"arguments": "-S[<keyid>], --gpg-sign[=<keyid>], --no-gpg-sign",
"description": "GPG-sign commits.\nThe keyid argument is optional and defaults to the committer identity; if specified, it must be stuck to the option without a space.\n--no-gpg-sign is useful to countermand both commit.gpgSign configuration variable, and earlier --gpg-sign."
},
{
"argument": "--no-gpg-sign",
"arguments": "-S[<keyid>], --gpg-sign[=<keyid>], --no-gpg-sign",
"description": "GPG-sign commits.\nThe keyid argument is optional and defaults to the committer identity; if specified, it must be stuck to the option without a space.\n--no-gpg-sign is useful to countermand both commit.gpgSign configuration variable, and earlier --gpg-sign."
},
{
"argument": "--quiet",
"arguments": "-q, --quiet",
"description": "Be quiet.\nImplies --no-stat."
},
{
"argument": "--verbose",
"arguments": "-v, --verbose",
"description": "Be verbose.\nImplies --stat."
},
{
"argument": "--stat",
"arguments": "--stat",
"description": "Show a diffstat of what changed upstream since the last rebase.\nThe diffstat is also controlled by the configuration option rebase.stat."
},
{
"argument": "--no-stat",
"arguments": "-n, --no-stat",
"description": "Do not show a diffstat as part of the rebase process."
},
{
"argument": "--no-verify",
"arguments": "--no-verify",
"description": "This option bypasses the pre-rebase hook.\nSee also githooks(5)."
},
{
"argument": "--verify",
"arguments": "--verify",
"description": "Allows the pre-rebase hook to run, which is the default.\nThis option can be used to override --no-verify.\nSee also githooks(5)."
},
{
"method_name": "EnsureContext",
"argument": "-C<n>",
"arguments": "-C<n>",
"description": "Ensure at least <n> lines of surrounding context match before and after each change.\nWhen fewer lines of surrounding context exist they all must match.\nBy default no context is ever ignored.\nImplies --apply."
},
{
"argument": "--no-ff",
"arguments": "--no-ff, --force-rebase, -f",
"description": "Individually replay all rebased commits instead of fast-forwarding over the unchanged ones.\nThis ensures that the entire history of the rebased branch is composed of new commits.\n\nYou may find this helpful after reverting a topic branch merge, as this option recreates the topic branch with fresh commits so it can be remerged successfully without needing to \"revert the reversion\" (see the revert-a-faulty-merge How-To[1] for details)."
},
{
"argument": "--force-rebase",
"arguments": "--no-ff, --force-rebase, -f",
"description": "Individually replay all rebased commits instead of fast-forwarding over the unchanged ones.\nThis ensures that the entire history of the rebased branch is composed of new commits.\n\nYou may find this helpful after reverting a topic branch merge, as this option recreates the topic branch with fresh commits so it can be remerged successfully without needing to \"revert the reversion\" (see the revert-a-faulty-merge How-To[1] for details)."
},
{
"argument": "--fork-point",
"arguments": "--fork-point, --no-fork-point",
"description": "Use reflog to find a better common ancestor between <upstream> and <branch> when calculating which commits have been introduced by <branch>.\n\nWhen --fork-point is active, fork_point will be used instead of <upstream> to calculate the set of commits to rebase, where fork_point is the result of git merge-base --fork-point <upstream> <branch> command (see git-merge-base(1)).\nIf fork_point ends up being empty, the <upstream> will be used as a fallback.\n\nIf <upstream> is given on the command line, then the default is --no-fork-point, otherwise the default is --fork-point.\nSee also rebase.forkpoint in git-config(1).\n\nIf your branch was based on <upstream> but <upstream> was rewound and your branch contains commits which were dropped, this option can be used with --keep-base in order to drop those commits from your branch."
},
{
"argument": "--no-fork-point",
"arguments": "--fork-point, --no-fork-point",
"description": "Use reflog to find a better common ancestor between <upstream> and <branch> when calculating which commits have been introduced by <branch>.\n\nWhen --fork-point is active, fork_point will be used instead of <upstream> to calculate the set of commits to rebase, where fork_point is the result of git merge-base --fork-point <upstream> <branch> command (see git-merge-base(1)).\nIf fork_point ends up being empty, the <upstream> will be used as a fallback.\n\nIf <upstream> is given on the command line, then the default is --no-fork-point, otherwise the default is --fork-point.\nSee also rebase.forkpoint in git-config(1).\n\nIf your branch was based on <upstream> but <upstream> was rewound and your branch contains commits which were dropped, this option can be used with --keep-base in order to drop those commits from your branch."
},
{
"argument": "--ignore-whitespace",
"arguments": "--ignore-whitespace",
"description": "Ignore whitespace differences when trying to reconcile differences.\nCurrently, each backend implements an approximation of this behavior:\n\napply backend: When applying a patch, ignore changes in whitespace in context lines.\nUnfortunately, this means that if the \"old\" lines being replaced by the patch differ only in whitespace from the existing file, you will get a merge conflict instead of a successful patch application.\n\nmerge backend: Treat lines with only whitespace changes as unchanged when merging.\nUnfortunately, this means that any patch hunks that were intended to modify whitespace and nothing else will be dropped, even if the other side had no changes that conflicted."
},
{
"argument": "--whitespace=<option>",
"arguments": "--whitespace=<option>",
"description": "This flag is passed to the git apply program (see git-apply(1)) that applies the patch.\nImplies --apply."
},
{
"argument": "--committer-date-is-author-date",
"arguments": "--committer-date-is-author-date",
"description": "Instead of using the current time as the committer date, use the author date of the commit being rebased as the committer date.\nThis option implies --force-rebase."
},
{
"argument": "--ignore-date",
"arguments": "--ignore-date, --reset-author-date",
"description": "Instead of using the author date of the original commit, use the current time as the author date of the rebased commit.\nThis option implies --force-rebase."
},
{
"argument": "--reset-author-date",
"arguments": "--ignore-date, --reset-author-date",
"description": "Instead of using the author date of the original commit, use the current time as the author date of the rebased commit.\nThis option implies --force-rebase."
},
{
"argument": "--signoff",
"arguments": "--signoff",
"description": "Add a Signed-off-by trailer to all the rebased commits.\nNote that if --interactive is given then only commits marked to be picked, edited or reworded will have the trailer added."
},
{
"argument": "--interactive",
"arguments": "-i, --interactive",
"description": "Make a list of the commits which are about to be rebased.\nLet the user edit that list before rebasing.\nThis mode can also be used to split commits (see SPLITTING COMMITS below).\n\nThe commit list format can be changed by setting the configuration option rebase.instructionFormat.\nA customized instruction format will automatically have the long commit hash prepended to the format."
},
{
"argument": "--rebase-merges[=(rebase-cousins|no-rebase-cousins)]",
"arguments": "-r, --rebase-merges[=(rebase-cousins|no-rebase-cousins)]",
"description": "By default, a rebase will simply drop merge commits from the todo list, and put the rebased commits into a single, linear branch.\nWith --rebase-merges, the rebase will instead try to preserve the branching structure within the commits that are to be rebased, by recreating the merge commits.\nAny resolved merge conflicts or manual amendments in these merge commits will have to be resolved/re-applied manually.\n\nBy default, or when no-rebase-cousins was specified, commits which do not have <upstream> as direct ancestor will keep their original branch point, i.e. commits that would be excluded by git-log(1)'s --ancestry-path option will keep their original ancestry by default.\nIf the rebase-cousins mode is turned on, such commits are instead rebased onto <upstream> (or <onto>, if specified).\n\nIt is currently only possible to recreate the merge commits using the ort merge strategy; different merge strategies can be used only via explicit exec git merge -s <strategy> [...] commands."
},
{
"argument": "--exec <cmd>",
"arguments": "-x <cmd>, --exec <cmd>",
"description": "Append \"exec <cmd>\" after each line creating a commit in the final history.\n<cmd> will be interpreted as one or more shell commands.\nAny command that fails will interrupt the rebase, with exit code 1."
},
{
"argument": "--root",
"arguments": "--root",
"description": "Rebase all commits reachable from <branch>, instead of limiting them with an <upstream>.\nThis allows you to rebase the root commit(s) on a branch.\nWhen used with --onto, it will skip changes already contained in <newbase> (instead of <upstream>) whereas without\n--onto it will operate on every change."
},
{
"argument": "--autosquash",
"arguments": "--autosquash, --no-autosquash",
"description": "When the commit log message begins with \"squash! ...\" or \"fixup! ...\" or \"amend! ...\", and there is already a commit in the todo list that matches the same ..., automatically modify the todo list of rebase -i, so that the commit marked for squashing comes right after the commit to be modified, and change the action of the moved commit from pick to squash or fixup or fixup -C respectively.\nA commit matches the ... if the commit subject matches, or if the ... refers to the commit’s hash.\nAs a fall-back, partial matches of the commit subject work, too.\nThe recommended way to create fixup/amend/squash commits is by using the --fixup, --fixup=amend: or --fixup=reword: and --squash options respectively of git-commit(1).\n\nIf the --autosquash option is enabled by default using the configuration variable rebase.autoSquash, this option can be used to override and disable this setting."
},
{
"argument": "--no-autosquash",
"arguments": "--autosquash, --no-autosquash",
"description": "When the commit log message begins with \"squash! ...\" or \"fixup! ...\" or \"amend! ...\", and there is already a commit in the todo list that matches the same ..., automatically modify the todo list of rebase -i, so that the commit marked for squashing comes right after the commit to be modified, and change the action of the moved commit from pick to squash or fixup or fixup -C respectively.\nA commit matches the ... if the commit subject matches, or if the ... refers to the commit’s hash.\nAs a fall-back, partial matches of the commit subject work, too.\nThe recommended way to create fixup/amend/squash commits is by using the --fixup, --fixup=amend: or --fixup=reword: and --squash options respectively of git-commit(1).\n\nIf the --autosquash option is enabled by default using the configuration variable rebase.autoSquash, this option can be used to override and disable this setting."
},
{
"argument": "--autostash",
"arguments": "--autostash, --no-autostash",
"description": "Automatically create a temporary stash entry before the operation begins, and apply it after the operation ends.\nThis means that you can run rebase on a dirty worktree.\nHowever, use with care: the final stash application after a successful rebase might result in non-trivial conflicts."
},
{
"argument": "--no-autostash",
"arguments": "--autostash, --no-autostash",
"description": "Automatically create a temporary stash entry before the operation begins, and apply it after the operation ends.\nThis means that you can run rebase on a dirty worktree.\nHowever, use with care: the final stash application after a successful rebase might result in non-trivial conflicts."
},
{
"argument": "--reschedule-failed-exec",
"arguments": "--reschedule-failed-exec, --no-reschedule-failed-exec",
"description": "Automatically reschedule exec commands that failed.\nThis only makes sense in interactive mode (or when an --exec option was provided).\n\nEven though this option applies once a rebase is started, it’s set for the whole rebase at the start based on either the rebase.rescheduleFailedExec configuration (see git-config(1) or \"CONFIGURATION\" below) or whether this option is provided.\nOtherwise an explicit --no-reschedule-failed-exec at the start would be overridden by the presence of rebase.rescheduleFailedExec=true configuration."
},
{
"argument": "--no-reschedule-failed-exec",
"arguments": "--reschedule-failed-exec, --no-reschedule-failed-exec",
"description": "Automatically reschedule exec commands that failed.\nThis only makes sense in interactive mode (or when an --exec option was provided).\n\nEven though this option applies once a rebase is started, it’s set for the whole rebase at the start based on either the rebase.rescheduleFailedExec configuration (see git-config(1) or \"CONFIGURATION\" below) or whether this option is provided.\nOtherwise an explicit --no-reschedule-failed-exec at the start would be overridden by the presence of rebase.rescheduleFailedExec=true configuration."
}
]
},
{
"command_name": "push",
"enabled": true,
"options": [
{
"argument": "--all",
"arguments": "--all",
"description": "Push all branches (i.e. refs under refs/heads/); cannot be used with other <refspec>."
},
{
"argument": "--prune",
"arguments": "--prune",
"description": "Remove remote branches that don’t have a local counterpart.\nFor example a remote branch tmp will be removed if a local branch with the same name doesn’t exist any more. This also respects refspecs, e.g. git push --prune remote refs/heads/*:refs/tmp/* would make sure that remote refs/tmp/foo will be removed if refs/heads/foo doesn’t exist."
},
{
"argument": "--mirror",
"arguments": "--mirror",
"description": "Instead of naming each ref to push, specifies that all refs under refs/ (which includes but is not limited to refs/heads/, refs/remotes/, and refs/tags/) be mirrored to the remote repository.\nNewly created local refs will be pushed to the remote end, locally updated refs will be force updated on the remote end, and deleted refs will be removed from the remote end.\nThis is the default if the configuration option remote.<remote>.mirror is set."
},
{
"argument": "--dry-run",
"arguments": "-n, --dry-run",
"description": "Do everything except actually send the updates."
},
{
"argument": "--porcelain",
"arguments": "--porcelain",
"description": "Produce machine-readable output.\nThe output status line for each ref will be tab-separated and sent to stdout instead of stderr.\nThe full symbolic names of the refs will be given."
},
{
"argument": "--delete",
"arguments": "--delete",
"description": "All listed refs are deleted from the remote repository.\nThis is the same as prefixing all refs with a colon."
},
{
"argument": "--tags",
"arguments": "--tags",
"description": "All refs under refs/tags are pushed, in addition to refspecs explicitly listed on the command line."
},
{
"argument": "--follow-tags",
"arguments": "--follow-tags",
"description": "Push all the refs that would be pushed without this option, and also push annotated tags in refs/tags that are missing from the remote but are pointing at commit-ish that are reachable from the refs being pushed.\nThis can also be specified with configuration variable push.followTags.\nFor more information, see push.followTags in git-config(1)."
},
{
"argument": "--signed",
"arguments": "--signed",
"description": "GPG-sign the push request to update refs on the receiving side, to allow it to be checked by the hooks and/or be logged.\nIf false or --no-signed, no signing will be attempted.\nIf true or --signed, the push will fail if the server does not support signed pushes.\nIf set to if-asked, sign if and only if the server supports signed pushes.\nThe push will also fail if the actual call to gpg --sign fails.\nSee git-receive-pack(1) for the details on the receiving end."
},
{
"argument": "--no-signed",
"arguments": "--no-signed",
"description": "GPG-sign the push request to update refs on the receiving side, to allow it to be checked by the hooks and/or be logged.\nIf false or --no-signed, no signing will be attempted.\nIf true or --signed, the push will fail if the server does not support signed pushes.\nIf set to if-asked, sign if and only if the server supports signed pushes.\nThe push will also fail if the actual call to gpg --sign fails.\nSee git-receive-pack(1) for the details on the receiving end."
},
{
"argument": "--sign=(true|false|if-asked)",
"arguments": "--sign=(true|false|if-asked)",
"description": "GPG-sign the push request to update refs on the receiving side, to allow it to be checked by the hooks and/or be logged.\nIf false or --no-signed, no signing will be attempted.\nIf true or --signed, the push will fail if the server does not support signed pushes.\nIf set to if-asked, sign if and only if the server supports signed pushes.\nThe push will also fail if the actual call to gpg --sign fails.\nSee git-receive-pack(1) for the details on the receiving end."
},
{
"argument": "--atomic",
"arguments": "--atomic",
"description": "Use an atomic transaction on the remote side if available.\nEither all refs are updated, or on error, no refs are updated.\nIf the server does not support atomic pushes the push will fail."
},
{
"argument": "--no-atomic",
"arguments": "--no-atomic",
"description": "Use an atomic transaction on the remote side if available.\nEither all refs are updated, or on error, no refs are updated.\nIf the server does not support atomic pushes the push will fail."
},
{
"argument": "--push-option",
"arguments": "-o, --push-option",
"description": "Transmit the given string to the server, which passes them to the pre-receive as well as the post-receive hook.\nThe given string must not contain a NUL or LF character."
},
{
"argument": "--receive-pack=<git-receive-pack>",
"arguments": "--receive-pack=<git-receive-pack>",
"description": "Path to the git-receive-pack program on the remote end.\nSometimes useful when pushing to a remote repository over ssh, and you do not have the program in a directory on the default $PATH."
},
{
"argument": "--exec=<git-receive-pack>",
"arguments": "--exec=<git-receive-pack>",
"description": "Path to the git-receive-pack program on the remote end.\nSometimes useful when pushing to a remote repository over ssh, and you do not have the program in a directory on the default $PATH."
},
{
"argument": "--force",
"arguments": "-f, --force",
"description": "Usually, the command refuses to update a remote ref that is not an ancestor of the local ref used to overwrite it.\nAlso, when --force-with-lease option is used, the command refuses to update a remote ref whose current value does not match what is expected."
},
{
"argument": "--repo=<repository>",
"arguments": "--repo=<repository>",
"description": "This option is equivalent to the <repository> argument.\nIf both are specified, the command-line argument takes precedence."
},
{
"argument": "--set-upstream",
"arguments": "-u, --set-upstream",
"description": "For every branch that is up to date or successfully pushed, add upstream (tracking) reference, used by argument-less git-pull(1) and other commands.\nFor more information, see branch.<name>.merge in git-config(1)."
},
{
"argument": "--thin",
"arguments": "--thin",
"description": "These options are passed to git-send-pack(1).\nA thin transfer significantly reduces the amount of sent data when the sender and receiver share many of the same objects in common.\nThe default is --thin."
},
{
"argument": "--no-thin",
"arguments": "--no-thin",
"description": "These options are passed to git-send-pack(1).\nA thin transfer significantly reduces the amount of sent data when the sender and receiver share many of the same objects in common.\nThe default is --thin."
},
{
"argument": "--quiet",
"arguments": "-q, --quiet",
"description": "Suppress all output, including the listing of updated refs, unless an error occurs.\nProgress is not reported to the standard error stream."
},
{
"argument": "--verbose",
"arguments": "-v, --verbose",
"description": "Run verbosely."
},
{
"argument": "--progress",
"arguments": "--progress",
"description": "Progress status is reported on the standard error stream by default when it is attached to a terminal, unless -q is specified.\nThis flag forces progress status even if the standard error stream is not directed to a terminal."
},
{
"argument": "--no-recurse-submodules",
"arguments": "--no-recurse-submodules",
"description": "May be used to make sure all submodule commits used by the revisions to be pushed are available on a remote-tracking branch.\nIf check is used Git will verify that all submodule commits that changed in the revisions to be pushed are available on at least one remote of the submodule.\nIf any commits are missing the push will be aborted and exit with non-zero status.\nIf on-demand is used all submodules that changed in the revisions to be pushed will be pushed.\nIf on-demand was not able to push all necessary revisions it will also be aborted and exit with non-zero status.\nIf only is used all submodules will be recursively pushed while the superproject is left unpushed.\nA value of no or using --no-recurse-submodules can be used to override the push.recurseSubmodules configuration variable when no submodule recursion is required."
},
{
"argument": "--recurse-submodules=(check|on-demand|only|no)",
"arguments": "--recurse-submodules=(check|on-demand|only|no)",
"description": "May be used to make sure all submodule commits used by the revisions to be pushed are available on a remote-tracking branch.\nIf check is used Git will verify that all submodule commits that changed in the revisions to be pushed are available on at least one remote of the submodule.\nIf any commits are missing the push will be aborted and exit with non-zero status.\nIf on-demand is used all submodules that changed in the revisions to be pushed will be pushed.\nIf on-demand was not able to push all necessary revisions it will also be aborted and exit with non-zero status.\nIf only is used all submodules will be recursively pushed while the superproject is left unpushed.\nA value of no or using --no-recurse-submodules can be used to override the push.recurseSubmodules configuration variable when no submodule recursion is required."
},
{
"argument": "--verify",
"arguments": "--verify",
"description": "Toggle the pre-push hook (see githooks(5)).\nThe default is --verify, giving the hook a chance to prevent the push.\nWith --no-verify, the hook is bypassed completely."
},
{
"argument": "--no-verify",
"arguments": "--no-verify",
"description": "Toggle the pre-push hook (see githooks(5)).\nThe default is --verify, giving the hook a chance to prevent the push.\nWith --no-verify, the hook is bypassed completely."
},
{
"argument": "--ipv4",
"arguments": "-4, --ipv4",
"description": "Use IPv4 addresses only, ignoring IPv6 addresses."
},
{
"argument": "--ipv6",
"arguments": "-6, --ipv6",
"description": "Use IPv6 addresses only, ignoring IPv4 addresses."
}
]
},
{
"command_name": "clone",
"enabled": true,
"options": [
{
"argument": "--local",
"arguments": "--local, -l",
"description": "When the repository to clone from is on a local machine, this flag bypasses the normal 'Git aware' transport mechanism and clones the repository by making a copy of HEAD and everything under objects and refs directories. The files under .git/objects/ directory are hardlinked to save space when possible."
},
{
"argument": "--no-hardlinks",
"arguments": "--no-hardlinks",
"description": "Force the cloning process from a repository on a local filesystem to copy the files under the .git/objects directory instead of using hardlinks. This may be desirable if you are trying to make a back-up of your repository."
},
{
"argument": "--shared",
"arguments": "--shared, -s",
"description": "When the repository to clone is on the local machine, instead of using hard links, automatically setup .git/objects/info/alternates to share the objects with the source repository. The resulting repository starts out without any object of its own."
},
{
"argument": "--dissociate",
"arguments": "--dissociate",
"description": "Borrow the objects from reference repositories specified with the --reference options only to reduce network transfer, and stop borrowing from them after a clone is made by making necessary local copies of borrowed objects. This option can also be used when cloning locally from a repository that already borrows objects from another repository—the new repository will borrow objects from the same repository, and this option can be used to stop the borrowing."
},
{
"argument": "--quiet",
"arguments": "--quiet, -q",
"description": "Operate quietly. Progress is not reported to the standard error stream."
},
{
"argument": "--verbose",
"arguments": "--verbose, -v",
"description": "Run verbosely. Does not affect the reporting of progress status to the standard error stream."
},
{
"argument": "--progress",
"arguments": "--progress",
"description": "Progress status is reported on the standard error stream by default when it is attached to a terminal, unless -q is specified. This flag forces progress status even if the standard error stream is not directed to a terminal."
},
{
"argument": "--no-checkout",
"arguments": "--no-checkout, -n",
"description": "No checkout of HEAD is performed after the clone is complete."
},
{
"argument": "--bare",
"arguments": "--bare",
"description": "Make a bare Git repository. That is, instead of creating <directory> and placing the administrative files in <directory>/.git, make the <directory> itself the $GIT_DIR. This obviously implies the -n because there is nowhere to check out the working tree. Also the branch heads at the remote are copied directly to corresponding local branch heads, without mapping them to refs/remotes/origin/. When this option is used, neither remote-tracking branches nor the related configuration variables are created."
},
{
"argument": "--mirror",
"arguments": "--mirror",
"description": "Set up a mirror of the source repository. This implies --bare. Compared to --bare, --mirror not only maps local branches of the source to local branches of the target, it maps all refs (including remote-tracking branches, notes etc.) and sets up a refspec configuration such that all these refs are overwritten by a git remote update in the target repository."
},
{
"argument": "--origin <name>",
"arguments": "--origin <name>, -o <name>",
"description": "Instead of using the remote name origin to keep track of the upstream repository, use <name>."
},
{
"argument": "--branch <name>",
"arguments": "--branch <name>, -b <name>",
"description": "Instead of pointing the newly created HEAD to the branch pointed to by the cloned repository’s HEAD, point to <name> branch instead. In a non-bare repository, this is the branch that will be checked out. --branch can also take tags and detaches the HEAD at that commit in the resulting repository."
},
{
"argument": "--upload-pack <upload-pack>",
"arguments": "--upload-pack <upload-pack>, -u <upload-pack>",
"description": "When given, and the repository to clone from is accessed via ssh, this specifies a non-default path for the command run on the other end."
},
{
"argument": "--template=<template_directory>",
"arguments": "--template=<template_directory>",
"description": "Specify the directory from which templates will be used; (See the 'TEMPLATE DIRECTORY' section of git-init(1).)"
},
{
"argument": "--depth <depth>",
"arguments": "--depth <depth>",
"description": "Create a shallow clone with a history truncated to the specified number of commits. Implies --single-branch unless --no-single-branch is given to fetch the histories near the tips of all branches. If you want to clone submodules shallowly, also pass --shallow-submodules."
},
{
"argument": "--shallow-since=<date>",
"arguments": "--shallow-since=<date>",
"description": "Create a shallow clone with a history after the specified time."
},
{
"argument": "--shallow-exclude=<revision>",
"arguments": "--shallow-exclude=<revision>",
"description": "Create a shallow clone with a history, excluding commits reachable from a specified remote branch or tag. This option can be specified multiple times."
},
{
"argument": "--single-branch",
"arguments": "--single-branch",
"description": "Clone only the history leading to the tip of a single branch, either specified by the --branch option or the primary branch remote’s HEAD points at. Further fetches into the resulting repository will only update the remote-tracking branch for the branch this option was used for the initial cloning. If the HEAD at the remote did not point at any branch when --single-branch clone was made, no remote-tracking branch is created."
},
{
"argument": "--no-single-branch",
"arguments": "--no-single-branch",
"description": "Clone only the history leading to the tip of a single branch, either specified by the --branch option or the primary branch remote’s HEAD points at. Further fetches into the resulting repository will only update the remote-tracking branch for the branch this option was used for the initial cloning. If the HEAD at the remote did not point at any branch when --single-branch clone was made, no remote-tracking branch is created."
},
{
"argument": "--recurse-submodules[=<pathspec>]",
"arguments": "--recurse-submodules[=<pathspec>]",
"description": "After the clone is created, initialize and clone submodules within based on the provided pathspec. If no pathspec is provided, all submodules are initialized and cloned. Submodules are initialized and cloned using their default settings. The resulting clone has submodule.active set to the provided pathspec, or '.' (meaning all submodules) if no pathspec is provided. This is equivalent to running git submodule update --init --recursive immediately after the clone is finished. This option is ignored if the cloned repository does not have a worktree/checkout (i.e. if any of --no-checkout/-n, --bare, or --mirror is given)"
},
{
"argument": "--shallow-submodules",
"arguments": "--shallow-submodules",
"description": "All submodules which are cloned will be shallow with a depth of 1."
},
{
"argument": "--no-shallow-submodules",
"arguments": "--no-shallow-submodules",
"description": "All submodules which are cloned will be shallow with a depth of 1."
},
{
"argument": "--separate-git-dir=<git dir>",
"arguments": "--separate-git-dir=<git dir>",
"description": "Instead of placing the cloned repository where it is supposed to be, place the cloned repository at the specified directory, then make a filesystem-agnostic Git symbolic link to there. The result is Git repository can be separated from working tree."
},
{
"argument": "--jobs <n>",
"arguments": "-j <n>, --jobs <n>",
"description": "The number of submodules fetched at the same time. Defaults to the submodule.fetchJobs option."
},
{
"argument": "--no-tags",
"arguments": "--no-tags",
"description": "Don’t clone any tags, and set remote.<remote>.tagOpt=--no-tags in the config, ensuring that future git pull and git fetch operations won’t follow any tags. Subsequent explicit tag fetches will still work,"
}
]
},
{
"command_name": "checkout",
"enabled": true,
"options": [
{
"argument": "--quiet",
"arguments": "-q, --quiet",
"description": "Quiet, suppress feedback messages."
},
{
"argument": "--progress",
"arguments": "--progress",
"description": "Progress status is reported on the standard error stream by default when it is attached to a terminal, unless --quiet is specified.\nThis flag enables progress reporting even if not attached to a terminal, regardless of --quiet."
},
{
"argument": "--no-progress",
"arguments": "--no-progress",
"description": "Progress status is reported on the standard error stream by default when it is attached to a terminal, unless --quiet is specified.\nThis flag enables progress reporting even if not attached to a terminal, regardless of --quiet."
},
{
"argument": "--force",
"arguments": "-f, --force",
"description": "When switching branches, proceed even if the index or the working tree differs from HEAD.\nThis is used to throw away local changes.\nWhen checking out paths from the index, do not fail upon unmerged entries; instead, unmerged entries are ignored."
},
{
"argument": "--ours",
"arguments": "--ours, --theirs",
"description": "When checking out paths from the index, check out stage #2 (ours) or #3 (theirs) for unmerged paths."
},
{
"argument": "--theirs",
"arguments": "--ours, --theirs",
"description": "When checking out paths from the index, check out stage #2 (ours) or #3 (theirs) for unmerged paths."
},
{
"method_name": "NewBranch",
"argument": "-b [new_branch]",
"arguments": "-b [new_branch]",
"description": "Create a new branch named <new_branch> and start it at <start_point>; see git-branch(1) for details."
},
{
"method_name": "NewBranchForce",
"argument": "-B [new_branch]",
"arguments": "-B [new_branch]",
"description": "Creates the branch <new_branch> and start it at <start_point>; if it already exists, then reset it to <start_point>.\nThis is equivalent to running 'git branch' with '-f'; see git-branch(1) for details."
},
{
"argument": "--track",
"arguments": "-t, --track",
"description": "When creating a new branch, set up 'upstream' configuration.\nSee '--track' in git-branch(1) for details."
},
{
"argument": "--no-track",
"arguments": "--no-track",
"description": "Do not set up 'upstream' configuration, even if the branch.autoSetupMerge configuration variable is true."
},
{
"method_name": "NewBranchReflog",
"argument": "-l",
"arguments": "-l",
"description": "Create the new branch’s reflog; see git-branch(1) for details."
},
{
"argument": "--detach",
"arguments": "--detach",
"description": "Rather than checking out a branch to work on it, check out a commit for inspection and discardable experiments.\nThis is the default behavior of 'git checkout <commit>' when <commit> is not a branch name.\nSee the 'DETACHED HEAD' section below for details."
},