-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
870 lines (844 loc) · 168 KB
/
Copy pathindex.html
File metadata and controls
870 lines (844 loc) · 168 KB
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
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>git-queue — PR queues for Git: small PRs, merged in order</title>
<meta name="description" content="git-queue manages PR queues: ordered, dependent branches published as numbered pull requests that merge first-in-first-out.">
<style>/* cyrillic-ext */
@font-face {
font-family: 'IBM Plex Sans';
font-style: normal;
font-weight: 400;
font-stretch: 100%;
font-display: swap;
src: url("fonts/1d40460e-3487-4319-8707-7e92f041246c.woff2") format('woff2');
unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
font-family: 'IBM Plex Sans';
font-style: normal;
font-weight: 400;
font-stretch: 100%;
font-display: swap;
src: url("fonts/1e3c8319-fbea-4ddb-9254-ead23f820576.woff2") format('woff2');
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek */
@font-face {
font-family: 'IBM Plex Sans';
font-style: normal;
font-weight: 400;
font-stretch: 100%;
font-display: swap;
src: url("fonts/29548b63-3669-47b8-ba20-b65139b32d6f.woff2") format('woff2');
unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
}
/* vietnamese */
@font-face {
font-family: 'IBM Plex Sans';
font-style: normal;
font-weight: 400;
font-stretch: 100%;
font-display: swap;
src: url("fonts/147d667b-adfc-4409-8256-195db56fb016.woff2") format('woff2');
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
font-family: 'IBM Plex Sans';
font-style: normal;
font-weight: 400;
font-stretch: 100%;
font-display: swap;
src: url("fonts/3156a7fe-6f8f-420a-8048-6cda2610c34a.woff2") format('woff2');
unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'IBM Plex Sans';
font-style: normal;
font-weight: 400;
font-stretch: 100%;
font-display: swap;
src: url("fonts/759a280a-513a-4e31-99e7-f7995d035ba3.woff2") format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
font-family: 'IBM Plex Sans';
font-style: normal;
font-weight: 500;
font-stretch: 100%;
font-display: swap;
src: url("fonts/1d40460e-3487-4319-8707-7e92f041246c.woff2") format('woff2');
unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
font-family: 'IBM Plex Sans';
font-style: normal;
font-weight: 500;
font-stretch: 100%;
font-display: swap;
src: url("fonts/1e3c8319-fbea-4ddb-9254-ead23f820576.woff2") format('woff2');
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek */
@font-face {
font-family: 'IBM Plex Sans';
font-style: normal;
font-weight: 500;
font-stretch: 100%;
font-display: swap;
src: url("fonts/29548b63-3669-47b8-ba20-b65139b32d6f.woff2") format('woff2');
unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
}
/* vietnamese */
@font-face {
font-family: 'IBM Plex Sans';
font-style: normal;
font-weight: 500;
font-stretch: 100%;
font-display: swap;
src: url("fonts/147d667b-adfc-4409-8256-195db56fb016.woff2") format('woff2');
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
font-family: 'IBM Plex Sans';
font-style: normal;
font-weight: 500;
font-stretch: 100%;
font-display: swap;
src: url("fonts/3156a7fe-6f8f-420a-8048-6cda2610c34a.woff2") format('woff2');
unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'IBM Plex Sans';
font-style: normal;
font-weight: 500;
font-stretch: 100%;
font-display: swap;
src: url("fonts/759a280a-513a-4e31-99e7-f7995d035ba3.woff2") format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
font-family: 'IBM Plex Sans';
font-style: normal;
font-weight: 600;
font-stretch: 100%;
font-display: swap;
src: url("fonts/1d40460e-3487-4319-8707-7e92f041246c.woff2") format('woff2');
unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
font-family: 'IBM Plex Sans';
font-style: normal;
font-weight: 600;
font-stretch: 100%;
font-display: swap;
src: url("fonts/1e3c8319-fbea-4ddb-9254-ead23f820576.woff2") format('woff2');
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek */
@font-face {
font-family: 'IBM Plex Sans';
font-style: normal;
font-weight: 600;
font-stretch: 100%;
font-display: swap;
src: url("fonts/29548b63-3669-47b8-ba20-b65139b32d6f.woff2") format('woff2');
unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
}
/* vietnamese */
@font-face {
font-family: 'IBM Plex Sans';
font-style: normal;
font-weight: 600;
font-stretch: 100%;
font-display: swap;
src: url("fonts/147d667b-adfc-4409-8256-195db56fb016.woff2") format('woff2');
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
font-family: 'IBM Plex Sans';
font-style: normal;
font-weight: 600;
font-stretch: 100%;
font-display: swap;
src: url("fonts/3156a7fe-6f8f-420a-8048-6cda2610c34a.woff2") format('woff2');
unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'IBM Plex Sans';
font-style: normal;
font-weight: 600;
font-stretch: 100%;
font-display: swap;
src: url("fonts/759a280a-513a-4e31-99e7-f7995d035ba3.woff2") format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
font-family: 'JetBrains Mono';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url("fonts/ea5c3a3f-6089-42fb-8daf-967685e6b4b8.woff2") format('woff2');
unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
font-family: 'JetBrains Mono';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url("fonts/9d55c922-cd11-44e8-8b07-7ab20d3c413b.woff2") format('woff2');
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek */
@font-face {
font-family: 'JetBrains Mono';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url("fonts/3366b3a3-936d-4312-9e55-3ff6cb80d779.woff2") format('woff2');
unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
}
/* vietnamese */
@font-face {
font-family: 'JetBrains Mono';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url("fonts/d8f826de-a807-43cf-89d1-378cd68cdbc8.woff2") format('woff2');
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
font-family: 'JetBrains Mono';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url("fonts/01fbf330-051c-4832-bd8f-3c5ffa51e1e9.woff2") format('woff2');
unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'JetBrains Mono';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url("fonts/4457e80e-748f-4a20-a17c-db3e80ad1e4d.woff2") format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
font-family: 'JetBrains Mono';
font-style: normal;
font-weight: 500;
font-display: swap;
src: url("fonts/ea5c3a3f-6089-42fb-8daf-967685e6b4b8.woff2") format('woff2');
unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
font-family: 'JetBrains Mono';
font-style: normal;
font-weight: 500;
font-display: swap;
src: url("fonts/9d55c922-cd11-44e8-8b07-7ab20d3c413b.woff2") format('woff2');
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek */
@font-face {
font-family: 'JetBrains Mono';
font-style: normal;
font-weight: 500;
font-display: swap;
src: url("fonts/3366b3a3-936d-4312-9e55-3ff6cb80d779.woff2") format('woff2');
unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
}
/* vietnamese */
@font-face {
font-family: 'JetBrains Mono';
font-style: normal;
font-weight: 500;
font-display: swap;
src: url("fonts/d8f826de-a807-43cf-89d1-378cd68cdbc8.woff2") format('woff2');
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
font-family: 'JetBrains Mono';
font-style: normal;
font-weight: 500;
font-display: swap;
src: url("fonts/01fbf330-051c-4832-bd8f-3c5ffa51e1e9.woff2") format('woff2');
unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'JetBrains Mono';
font-style: normal;
font-weight: 500;
font-display: swap;
src: url("fonts/4457e80e-748f-4a20-a17c-db3e80ad1e4d.woff2") format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
font-family: 'JetBrains Mono';
font-style: normal;
font-weight: 700;
font-display: swap;
src: url("fonts/ea5c3a3f-6089-42fb-8daf-967685e6b4b8.woff2") format('woff2');
unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
font-family: 'JetBrains Mono';
font-style: normal;
font-weight: 700;
font-display: swap;
src: url("fonts/9d55c922-cd11-44e8-8b07-7ab20d3c413b.woff2") format('woff2');
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek */
@font-face {
font-family: 'JetBrains Mono';
font-style: normal;
font-weight: 700;
font-display: swap;
src: url("fonts/3366b3a3-936d-4312-9e55-3ff6cb80d779.woff2") format('woff2');
unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
}
/* vietnamese */
@font-face {
font-family: 'JetBrains Mono';
font-style: normal;
font-weight: 700;
font-display: swap;
src: url("fonts/d8f826de-a807-43cf-89d1-378cd68cdbc8.woff2") format('woff2');
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
font-family: 'JetBrains Mono';
font-style: normal;
font-weight: 700;
font-display: swap;
src: url("fonts/01fbf330-051c-4832-bd8f-3c5ffa51e1e9.woff2") format('woff2');
unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'JetBrains Mono';
font-style: normal;
font-weight: 700;
font-display: swap;
src: url("fonts/4457e80e-748f-4a20-a17c-db3e80ad1e4d.woff2") format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
font-family: 'JetBrains Mono';
font-style: normal;
font-weight: 800;
font-display: swap;
src: url("fonts/ea5c3a3f-6089-42fb-8daf-967685e6b4b8.woff2") format('woff2');
unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
font-family: 'JetBrains Mono';
font-style: normal;
font-weight: 800;
font-display: swap;
src: url("fonts/9d55c922-cd11-44e8-8b07-7ab20d3c413b.woff2") format('woff2');
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek */
@font-face {
font-family: 'JetBrains Mono';
font-style: normal;
font-weight: 800;
font-display: swap;
src: url("fonts/3366b3a3-936d-4312-9e55-3ff6cb80d779.woff2") format('woff2');
unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
}
/* vietnamese */
@font-face {
font-family: 'JetBrains Mono';
font-style: normal;
font-weight: 800;
font-display: swap;
src: url("fonts/d8f826de-a807-43cf-89d1-378cd68cdbc8.woff2") format('woff2');
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
font-family: 'JetBrains Mono';
font-style: normal;
font-weight: 800;
font-display: swap;
src: url("fonts/01fbf330-051c-4832-bd8f-3c5ffa51e1e9.woff2") format('woff2');
unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'JetBrains Mono';
font-style: normal;
font-weight: 800;
font-display: swap;
src: url("fonts/4457e80e-748f-4a20-a17c-db3e80ad1e4d.woff2") format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
</style>
<style>
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; overflow-x: hidden; }
#gs {
--bg:#0a0b0d; --surface:#101215; --inset:#08090b; --line:#24282e; --line2:#1a1d22;
--text:#d7dbe0; --head:#f3f5f7; --muted:#b3b9c0; --dim:#8a9098; --faint:#61666d;
--green:#57d98a; --red:#f26d6d; --purple:#b58be8; --amber:#e0b25e;
--btn-text:#08090b;
}
#gs[data-theme="light"] {
--bg:#f5f3ec; --surface:#fbfaf5; --inset:#ece9df; --line:#dbd6ca; --line2:#e5e1d6;
--text:#33322d; --head:#161510; --muted:#4d4b44; --dim:#6f6d64; --faint:#949186;
--green:#1f9d57; --red:#c8443f; --purple:#7a4fb5; --amber:#9a6b1a;
--btn-text:#fbfaf5;
}
#gs a { color: var(--green); text-decoration: none; }
#gs a:hover { color: var(--green); opacity: 0.78; }
#gs code { font-family: 'JetBrains Mono', monospace; }
#gs ::selection { background: var(--green); color: var(--btn-text); }
#gs .gs-scroll::-webkit-scrollbar { height: 8px; }
#gs .gs-scroll::-webkit-scrollbar-thumb { background: var(--line); border-radius: 4px; }
@keyframes bsBlink { 0%,49%{opacity:1;} 50%,100%{opacity:0;} }
@keyframes bsRise { from{opacity:0; transform:translateY(6px);} to{opacity:1; transform:translateY(0);} }
@media (max-width: 920px) {
#gs [data-hero-grid] { grid-template-columns: 1fr !important; }
#gs [data-two-col] { grid-template-columns: 1fr !important; }
#gs [data-nav-links] { display: none !important; }
}
</style>
</head>
<body>
<div id="gs" data-theme="dark" style="min-height:100vh; background:var(--bg); color:var(--text); font-family:'IBM Plex Sans',sans-serif; -webkit-font-smoothing:antialiased; line-height:1.6; --green:#57d98a;">
<!-- ===================== NAV ===================== -->
<nav style="position:sticky; top:0; z-index:50; display:flex; align-items:center; justify-content:space-between; padding:0 32px; height:60px; background:color-mix(in srgb, var(--bg) 82%, transparent); backdrop-filter:blur(10px); border-bottom:1px solid var(--line2);">
<div style="display:flex; align-items:baseline; gap:10px;">
<a href="#top" style="font-family:'JetBrains Mono',monospace; font-size:15.5px; font-weight:800; color:var(--head);">git‑queue<span style="color:var(--green);">(1)</span></a>
<a id="nav-version" href="https://github.com/freshtonic/git-queue/releases/latest" style="font-family:'JetBrains Mono',monospace; font-size:12.5px; font-weight:600; color:var(--faint); text-decoration:none;">v0.1.3</a>
</div>
<div data-nav-links="1" style="display:flex; align-items:center; gap:26px; font-family:'JetBrains Mono',monospace; font-size:13.5px;">
<a href="#install" style="color:var(--dim);">Install</a>
<a href="#start" style="color:var(--dim);">Getting started</a>
<a href="#reference" style="color:var(--dim);">Reference</a>
<a href="#examples" style="color:var(--dim);">Examples</a>
<a href="#howto" style="color:var(--dim);">How do I…</a><a href="#faq" style="color:var(--dim);">FAQ</a>
</div>
<div style="display:flex; align-items:center; gap:12px; font-family:'JetBrains Mono',monospace;">
<button id="btn-theme" title="Toggle theme" style="cursor:pointer; width:34px; height:34px; display:flex; align-items:center; justify-content:center; border:1px solid var(--line); background:var(--surface); color:var(--dim); border-radius:8px; font-size:14px;">◑</button>
<a href="https://github.com/freshtonic/git-queue" style="display:flex; align-items:center; gap:7px; font-size:13px; font-weight:700; color:var(--btn-text); background:var(--green); padding:8px 14px; border-radius:8px;">★ GitHub</a>
</div>
</nav>
<!-- ===================== HERO ===================== -->
<header id="top" style="max-width:1160px; margin:0 auto; padding:16px 32px 8px;">
<div data-hero-grid="1" style="display:grid; grid-template-columns:1.02fr 0.98fr; gap:56px; align-items:center; padding:64px 0 40px;">
<div style="display:flex; flex-direction:column; gap:24px;">
<span style="font-family:'JetBrains Mono',monospace; font-size:12.5px; font-weight:700; letter-spacing:0.16em; text-transform:uppercase; color:var(--faint);">Queued pull requests for Git</span>
<span style="display:inline-block; margin-left:10px; padding:2px 10px; border:1px solid #f85149; color:#f85149; border-radius:2em; font-size:11px; letter-spacing:0.12em; text-transform:uppercase; vertical-align:middle;">alpha</span>
<h1 style="margin:0; font-family:'JetBrains Mono',monospace; font-size:50px; line-height:1.06; font-weight:800; color:var(--head); letter-spacing:-0.02em;">Manage queues of small, reviewable PRs on GitHub</h1>
<p style="margin:0; font-size:18px; line-height:1.62; color:var(--muted); max-width:31em;">Split a big change into dependent branches. <span style="color:var(--text); font-weight:600;">git-queue</span> rebases the whole queue on its base and opens one numbered PR per branch — each targeting the one below.</p>
<p style="margin:12px 0 0; font-size:13px; color:#f85149;">⚠️ Alpha software — git-queue rewrites branches and force-pushes (with lease) as part of normal operation. Run at your own risk.</p>
<div style="display:flex; align-items:stretch; gap:10px; margin-top:2px;">
<div style="flex:1; display:flex; align-items:center; gap:14px; background:var(--inset); border:1px solid var(--line); border-radius:10px; padding:14px 18px; font-family:'JetBrains Mono',monospace; font-size:14.5px;">
<span style="color:var(--green);">$</span><span style="color:var(--text);">cargo install git-queue</span>
<span style="margin-left:auto; color:var(--faint); font-size:12.5px;">crates.io</span>
</div>
<button id="btn-cp-install" style="cursor:pointer; border:1px solid var(--line); background:var(--surface); color:var(--dim); border-radius:10px; padding:0 16px; font-family:'JetBrains Mono',monospace; font-size:13px; min-width:82px;">copy</button>
</div>
<div style="display:flex; gap:16px; align-items:center; flex-wrap:wrap;">
<a href="https://github.com/freshtonic/git-queue" style="display:flex; align-items:center; gap:8px; font-family:'JetBrains Mono',monospace; font-size:14px; font-weight:700; color:var(--btn-text); background:var(--green); padding:12px 18px; border-radius:10px;">★ Star on GitHub</a>
<a href="#start" style="font-family:'JetBrains Mono',monospace; font-size:14px; color:var(--dim);">Read the workflow →</a>
</div>
<span style="font-family:'JetBrains Mono',monospace; font-size:12.5px; color:var(--faint);">Single Rust binary · <code>git queue …</code> dispatched by Git · MIT</span>
</div>
<!-- live terminal -->
<div style="background:var(--surface); border:1px solid var(--line); border-radius:12px; overflow:hidden; box-shadow:0 40px 90px -40px rgba(0,0,0,0.55);">
<div style="display:flex; align-items:center; gap:8px; padding:13px 18px; border-bottom:1px solid var(--line2);">
<span style="width:11px; height:11px; border-radius:50%; background:var(--red);"></span>
<span style="width:11px; height:11px; border-radius:50%; background:var(--amber);"></span>
<span style="width:11px; height:11px; border-radius:50%; background:var(--green);"></span>
<span style="margin-left:12px; font-family:'JetBrains Mono',monospace; font-size:12px; color:var(--faint);">~/repo — git queue</span>
<button id="btn-replay" style="margin-left:auto; cursor:pointer; border:none; background:transparent; color:var(--faint); font-family:'JetBrains Mono',monospace; font-size:11.5px;">▸ replay</button>
</div>
<div style="padding:22px 24px; height:360px; overflow:hidden; display:flex; flex-direction:column; justify-content:flex-end; font-family:'JetBrains Mono',monospace; font-size:14px; line-height:1.9;"><div id="hero-term" style="display:flex; flex-direction:column; gap:1px;"></div></div>
</div>
</div>
<!-- how it works strip -->
<div data-two-col="1" style="display:grid; grid-template-columns:repeat(3,1fr); gap:1px; background:var(--line2); border:1px solid var(--line2); border-radius:12px; overflow:hidden; margin:24px 0 8px;">
<div style="background:var(--bg); padding:24px 26px;">
<div style="font-family:'JetBrains Mono',monospace; font-size:13px; font-weight:700; color:var(--green); margin-bottom:8px;">01 · Track order</div>
<p style="margin:0; font-size:14.5px; color:var(--muted);">Branches form a forest under trunk via parent pointers. A <em style="font-style:normal; color:var(--text);">queue line</em> is the linear chain from trunk to a leaf.</p>
</div>
<div style="background:var(--bg); padding:24px 26px;">
<div style="font-family:'JetBrains Mono',monospace; font-size:13px; font-weight:700; color:var(--green); margin-bottom:8px;">02 · Requeue on trunk</div>
<p style="margin:0; font-size:14.5px; color:var(--muted);">Change a lower branch and every descendant is rebased onto its new tip — so you never hand-rebase a queue.</p>
</div>
<div style="background:var(--bg); padding:24px 26px;">
<div style="font-family:'JetBrains Mono',monospace; font-size:13px; font-weight:700; color:var(--green); margin-bottom:8px;">03 · One PR per branch</div>
<p style="margin:0; font-size:14.5px; color:var(--muted);"><code>submit</code> pushes bottom-first, targets each PR at the branch below, writes <code>[k/n]</code> titles and a linked queue map.</p>
</div>
</div>
</header>
<!-- ===================== INSTALL ===================== -->
<section id="install" style="scroll-margin-top:80px; max-width:1160px; margin:0 auto; padding:72px 32px 24px;">
<div style="display:flex; align-items:baseline; gap:16px; margin-bottom:8px;">
<span style="font-family:'JetBrains Mono',monospace; font-size:13px; font-weight:700; color:var(--green);">01</span>
<h2 style="margin:0; font-family:'JetBrains Mono',monospace; font-size:30px; font-weight:800; color:var(--head); letter-spacing:-0.01em;">Install</h2>
</div>
<p style="margin:0 0 28px; font-size:16px; color:var(--muted); max-width:52em;">Pick your platform below (we preselect the one you're on). Afterwards, <code style="color:var(--text);">git queue setup</code> installs the man page, shell completion, and an optional <code>git q</code> alias.</p>
<div data-two-col="1" style="display:grid; grid-template-columns:1.15fr 0.85fr; gap:24px;">
<div style="display:flex; flex-direction:column; gap:20px;">
<div id="os-tabs" style="display:flex; gap:8px; flex-wrap:wrap;">
<button data-os-btn="macos" style="cursor:pointer; font-family:'JetBrains Mono',monospace; font-size:13px; font-weight:600; padding:9px 15px; border-radius:9px; border:1px solid var(--line); background:var(--surface); color:var(--dim);">macOS</button>
<button data-os-btn="linux" style="cursor:pointer; font-family:'JetBrains Mono',monospace; font-size:13px; font-weight:600; padding:9px 15px; border-radius:9px; border:1px solid var(--line); background:var(--surface); color:var(--dim);">Linux</button>
<button data-os-btn="windows" style="cursor:pointer; font-family:'JetBrains Mono',monospace; font-size:13px; font-weight:600; padding:9px 15px; border-radius:9px; border:1px solid var(--line); background:var(--surface); color:var(--dim);">Windows</button>
</div>
<div data-os-panel="macos linux" style="background:var(--surface); border:1px solid var(--line); border-radius:12px; overflow:hidden;">
<div style="display:flex; align-items:center; justify-content:space-between; padding:11px 16px; border-bottom:1px solid var(--line2); font-family:'JetBrains Mono',monospace; font-size:11.5px; color:var(--faint); text-transform:uppercase; letter-spacing:0.1em;"><span>install script · recommended</span><button id="btn-cp-sh" style="cursor:pointer; border:none; background:transparent; color:var(--dim); font-family:inherit; font-size:11px;">copy</button></div>
<pre class="gs-scroll" style="margin:0; padding:18px 20px; overflow-x:auto; font-family:'JetBrains Mono',monospace; font-size:13px; line-height:1.9; color:var(--text);"><span style="color:var(--green);">$</span> curl --proto '=https' --tlsv1.2 -LsSf \
https://github.com/freshtonic/git-queue/releases/latest/download/git-queue-installer.sh | sh</pre>
</div>
<div data-os-panel="windows" style="background:var(--surface); border:1px solid var(--line); border-radius:12px; overflow:hidden;">
<div style="display:flex; align-items:center; justify-content:space-between; padding:11px 16px; border-bottom:1px solid var(--line2); font-family:'JetBrains Mono',monospace; font-size:11.5px; color:var(--faint); text-transform:uppercase; letter-spacing:0.1em;"><span>install script · recommended</span><button id="btn-cp-ps" style="cursor:pointer; border:none; background:transparent; color:var(--dim); font-family:inherit; font-size:11px;">copy</button></div>
<pre class="gs-scroll" style="margin:0; padding:18px 20px; overflow-x:auto; font-family:'JetBrains Mono',monospace; font-size:13px; line-height:1.9; color:var(--text);"><span style="color:var(--green);">></span> powershell -ExecutionPolicy ByPass -c "irm https://github.com/freshtonic/git-queue/releases/latest/download/git-queue-installer.ps1 | iex"</pre>
</div>
<div data-os-panel="macos linux" style="background:var(--surface); border:1px solid var(--line); border-radius:12px; overflow:hidden;">
<div style="display:flex; align-items:center; justify-content:space-between; padding:11px 16px; border-bottom:1px solid var(--line2); font-family:'JetBrains Mono',monospace; font-size:11.5px; color:var(--faint); text-transform:uppercase; letter-spacing:0.1em;"><span>homebrew</span><button id="btn-cp-brew" style="cursor:pointer; border:none; background:transparent; color:var(--dim); font-family:inherit; font-size:11px;">copy</button></div>
<pre class="gs-scroll" style="margin:0; padding:16px 20px; overflow-x:auto; font-family:'JetBrains Mono',monospace; font-size:13.5px; color:var(--text);"><span style="color:var(--green);">$</span> brew install freshtonic/git-queue/git-queue</pre>
</div>
<div data-os-panel="macos linux windows" style="background:var(--surface); border:1px solid var(--line); border-radius:12px; overflow:hidden;">
<div style="display:flex; align-items:center; justify-content:space-between; padding:11px 16px; border-bottom:1px solid var(--line2); font-family:'JetBrains Mono',monospace; font-size:11.5px; color:var(--faint); text-transform:uppercase; letter-spacing:0.1em;"><span>cargo · from crates.io</span><button id="btn-cp-cargo" style="cursor:pointer; border:none; background:transparent; color:var(--dim); font-family:inherit; font-size:11px;">copy</button></div>
<pre style="margin:0; padding:16px 20px; font-family:'JetBrains Mono',monospace; font-size:13.5px; color:var(--text);"><span style="color:var(--green);">$</span> cargo install git-queue</pre>
</div>
<div data-os-panel="macos linux windows" style="background:var(--surface); border:1px solid var(--line); border-radius:12px; overflow:hidden;">
<div style="padding:11px 16px; border-bottom:1px solid var(--line2); font-family:'JetBrains Mono',monospace; font-size:11.5px; color:var(--faint); text-transform:uppercase; letter-spacing:0.1em;">prebuilt binary</div>
<p style="margin:0; padding:16px 20px; font-size:14px; color:var(--muted);">Grab an archive for your platform from the <a href="https://github.com/freshtonic/git-queue/releases/latest" style="color:var(--green);">latest GitHub release</a> (macOS/Linux x86-64 & arm64 <code>.tar.xz</code>, Windows x86-64 <code>.zip</code>), extract it, and put <code style="color:var(--text);">git-queue</code> on your <code>PATH</code>. Archives and install scripts are built by <a href="https://opensource.axo.dev/cargo-dist/" style="color:var(--dim);">dist</a>.</p>
</div>
<p style="margin:0; font-size:14.5px; color:var(--dim);">Because the binary is named <code style="color:var(--text);">git-queue</code>, Git runs <code style="color:var(--text);">git queue …</code> for you via its standard subcommand mechanism. Then <code style="color:var(--text);">git queue setup</code> installs the man page — afterwards both <code style="color:var(--text);">man git-queue</code> and <code style="color:var(--text);">git queue --help</code> work (Git routes <code>--help</code> to the man page; use <code style="color:var(--text);">git queue help</code> for inline output).</p>
</div>
<div style="display:flex; flex-direction:column; gap:20px;">
<div style="border:1px solid var(--amber); border-radius:12px; padding:20px 22px; background:color-mix(in srgb, var(--amber) 8%, var(--surface));">
<div style="font-family:'JetBrains Mono',monospace; font-size:13px; font-weight:700; color:var(--amber); margin-bottom:10px;">Optional · auto-requeue hooks</div>
<p style="margin:0 0 12px; font-size:14px; color:var(--muted);">Per-repo. Makes plain <code>git commit</code>/amend auto-requeue descendants.</p>
<pre style="margin:0; font-family:'JetBrains Mono',monospace; font-size:13px; line-height:1.9; color:var(--text);"><span style="color:var(--green);">$</span> git queue setup
<span style="color:var(--green);">$</span> git queue setup --undo</pre>
<p style="margin:12px 0 0; font-size:13px; color:var(--dim);">Without hooks, use <code>git queue commit</code> / <code>git queue amend</code> explicitly.</p>
</div>
<div style="border:1px solid var(--line); border-radius:12px; padding:20px 22px; background:var(--surface);">
<div style="font-family:'JetBrains Mono',monospace; font-size:13px; font-weight:700; color:var(--head); margin-bottom:12px;">Requirements</div>
<div style="display:flex; flex-direction:column; gap:14px;">
<div>
<div style="font-family:'JetBrains Mono',monospace; font-size:13.5px; color:var(--green); margin-bottom:2px;">git</div>
<p style="margin:0; font-size:13.5px; color:var(--muted);"><code>commit</code>/<code>sync</code> use <code>git replay</code> (≥ 2.44); <code>amend</code>/<code>reword</code> use <code>git history</code> (≥ 2.55). Other commands work on older git and tell you if a feature is missing.</p>
</div>
<div style="border-top:1px solid var(--line2); padding-top:12px;">
<div style="font-family:'JetBrains Mono',monospace; font-size:13.5px; color:var(--green); margin-bottom:2px;"><a href="https://cli.github.com">gh</a></div>
<p style="margin:0; font-size:13.5px; color:var(--muted);">Authenticated GitHub CLI, for <code>submit</code>/<code>yank</code>. Not needed for local-only queue operations.</p>
</div>
</div>
</div>
</div>
</div>
<p style="margin:22px 0 0; font-size:13px; color:var(--faint); font-family:'JetBrains Mono',monospace;">// The man page is generated from the CLI definition (clap_mangen) so it never drifts — regenerate with <code style="color:var(--dim);">git-queue man --dir <man1-dir></code>.</p>
</section>
<!-- ===================== GETTING STARTED ===================== -->
<section id="start" style="scroll-margin-top:80px; max-width:1160px; margin:0 auto; padding:72px 32px 24px;">
<div style="display:flex; align-items:baseline; gap:16px; margin-bottom:8px;">
<span style="font-family:'JetBrains Mono',monospace; font-size:13px; font-weight:700; color:var(--green);">02</span>
<h2 style="margin:0; font-family:'JetBrains Mono',monospace; font-size:30px; font-weight:800; color:var(--head); letter-spacing:-0.01em;">Getting started</h2>
</div>
<p style="margin:0 0 28px; font-size:16px; color:var(--muted); max-width:52em;">The core workflow. Build a queue branch-by-branch, submit numbered PRs, and keep everything rebased as trunk moves.</p>
<div data-two-col="1" style="display:grid; grid-template-columns:1fr 0.62fr; gap:24px; align-items:start;">
<div style="background:var(--surface); border:1px solid var(--line); border-radius:12px; overflow:hidden;">
<div style="padding:11px 16px; border-bottom:1px solid var(--line2); font-family:'JetBrains Mono',monospace; font-size:11.5px; color:var(--faint); text-transform:uppercase; letter-spacing:0.1em;">core workflow</div>
<pre class="gs-scroll" style="margin:0; padding:20px 22px; overflow-x:auto; font-family:'JetBrains Mono',monospace; font-size:13.5px; line-height:1.95; color:var(--text);">$ git checkout main
$ git queue create api # new branch on trunk; make commits
$ git queue create service # new branch on top of `api`
$ git queue create ui # new branch on top of `service`
$ git queue status # view the queue and PR states
$ git queue down / up # walk the queue (aliases: prev/next)
$ git queue submit # push all branches + open/update numbered PRs
# … trunk moves, a teammate pushes, or you amend a lower branch …
$ git queue sync # pull remote, requeue onto trunk, push (with lease)
$ git queue submit # refresh the PRs</pre>
</div>
<div style="background:var(--inset); border:1px solid var(--line); border-radius:12px; padding:20px 22px;">
<div style="font-family:'JetBrains Mono',monospace; font-size:11.5px; color:var(--faint); text-transform:uppercase; letter-spacing:0.1em; margin-bottom:14px;">the queue, at any point</div>
<pre style="margin:0; font-family:'JetBrains Mono',monospace; font-size:15px; line-height:2.05; color:var(--dim);">◉ ui #12 [OPEN]
◯ service #11 [OPEN]
◯ api #10 [OPEN]
┴
main (trunk)</pre>
<p style="margin:16px 0 0; font-size:13px; color:var(--muted);"><code style="color:var(--text);">◉</code> current branch · <code style="color:var(--text);">◯</code> tracked · bottom merges into trunk first.</p>
</div>
</div>
<h3 style="margin:40px 0 6px; font-family:'JetBrains Mono',monospace; font-size:19px; font-weight:800; color:var(--head);">The one distinction that matters most</h3>
<p style="margin:0 0 20px; font-size:15px; color:var(--muted);"><code style="color:var(--text);">commit</code> vs <code style="color:var(--text);">amend</code>. Learn this pair and the rest follows.</p>
<div data-two-col="1" style="display:grid; grid-template-columns:1fr 1fr; gap:20px;">
<div style="border:1px solid var(--line); border-radius:12px; padding:22px 24px; background:var(--surface);">
<div style="font-family:'JetBrains Mono',monospace; font-size:15px; font-weight:800; color:var(--head); margin-bottom:6px;">git queue commit</div>
<p style="margin:0; font-size:14.5px; color:var(--muted);">Adds a <strong style="color:var(--text); font-weight:600;">new</strong> commit — new work — then requeues all descendants onto the new tip.</p>
<div style="margin-top:14px; font-family:'JetBrains Mono',monospace; font-size:12px; color:var(--faint);">engine · <code style="color:var(--dim);">git replay</code></div>
</div>
<div style="border:1px solid var(--green); border-radius:12px; padding:22px 24px; background:color-mix(in srgb, var(--green) 7%, var(--surface));">
<div style="font-family:'JetBrains Mono',monospace; font-size:15px; font-weight:800; color:var(--head); margin-bottom:6px;">git queue amend</div>
<p style="margin:0; font-size:14.5px; color:var(--muted);">Folds <strong style="color:var(--text); font-weight:600;">staged</strong> changes into the branch's tip commit and updates descendants — like <code>commit --amend</code>, queue-aware. The everyday tool for review feedback on a lower PR.</p>
<div style="margin-top:14px; font-family:'JetBrains Mono',monospace; font-size:12px; color:var(--faint);">engine · <code style="color:var(--dim);">git history fixup</code></div>
</div>
</div>
<div style="margin-top:24px; display:flex; gap:16px; align-items:flex-start; border:1px solid var(--red); border-radius:12px; padding:20px 24px; background:color-mix(in srgb, var(--red) 8%, var(--surface));">
<span style="font-family:'JetBrains Mono',monospace; font-size:22px; color:var(--red); line-height:1.2;">✗</span>
<div>
<div style="font-family:'JetBrains Mono',monospace; font-size:15px; font-weight:800; color:var(--head); margin-bottom:4px;">The golden rule — don't hand-rebase a queue.</div>
<p style="margin:0; font-size:14.5px; color:var(--muted);">When you change a branch that has descendants, use the git-queue command for it so the change propagates to every branch above (forks included). Running <code style="color:var(--text);">git rebase</code> on a tracked branch detaches its children.</p>
</div>
</div>
</section>
<!-- ===================== COMMAND REFERENCE ===================== -->
<section id="reference" style="scroll-margin-top:80px; max-width:1160px; margin:0 auto; padding:72px 32px 24px;">
<div style="display:flex; align-items:baseline; gap:16px; margin-bottom:8px;">
<span style="font-family:'JetBrains Mono',monospace; font-size:13px; font-weight:700; color:var(--green);">03</span>
<h2 style="margin:0; font-family:'JetBrains Mono',monospace; font-size:30px; font-weight:800; color:var(--head); letter-spacing:-0.01em;">Command reference</h2>
</div>
<p style="margin:0 0 20px; font-size:16px; color:var(--muted); max-width:52em;">The full command set, grouped by task. Filter to find one fast.</p>
<div style="display:flex; align-items:center; gap:12px; margin-bottom:22px; max-width:440px;">
<div style="flex:1; display:flex; align-items:center; gap:10px; background:var(--inset); border:1px solid var(--line); border-radius:10px; padding:10px 14px;">
<span style="font-family:'JetBrains Mono',monospace; color:var(--faint);">/</span>
<input id="cmd-filter" value="" placeholder="filter commands…" style="flex:1; border:none; outline:none; background:transparent; color:var(--text); font-family:'JetBrains Mono',monospace; font-size:14px;">
<span style="font-family:'JetBrains Mono',monospace; font-size:12px; color:var(--faint);" id="cmd-count">23 cmds</span>
</div>
</div>
<div data-cmd-group style="margin-bottom:26px;"><div style="font-family:'JetBrains Mono',monospace; font-size:12px; font-weight:700; letter-spacing:0.14em; text-transform:uppercase; color:var(--green); margin-bottom:10px;">Setup</div><div class="gs-scroll" style="border:1px solid var(--line); border-radius:12px; overflow:hidden; background:var(--surface);"><div data-two-col="1" data-cmd-row data-search="git queue create <name> [--base <b>] create <name> queued after the current branch (or on base <b>) and track it." style="display:grid; grid-template-columns:0.9fr 1.1fr; gap:20px; padding:14px 20px; border-top:1px solid var(--line2); align-items:baseline;"><code style="font-family:'JetBrains Mono',monospace; font-size:15.5px; color:var(--text); white-space:pre-wrap;">git queue create <name> [--base <b>]</code><span style="font-size:16px; color:var(--muted);">Create the next branch of the queue; in namespaced queues a short name becomes queue/<qname>/<name>, like edit's sections.</span><details style="grid-column:1 / -1; margin-top:8px;"><summary style="cursor:pointer; color:var(--green); font-family:'JetBrains Mono',monospace; font-size:13.5px;">learn more</summary><p style="margin:8px 0 2px; font-size:15.5px; line-height:1.6; color:var(--muted);">Creates the next branch of the queue at the current branch's tip (or at <code style="color:var(--dim);">--base <branch></code>'s tip). In a namespaced queue you give the short name and the branch is created as <code style="color:var(--dim);">queue/<name>/<short></code>, exactly like edit's sections; names containing <code style="color:var(--dim);">/</code> are used as-is, and plain-named queues stay plain. Extending inherits the queue name; starting a new one asks (or takes <code style="color:var(--dim);">--queue</code>). Branch arguments elsewhere (<code style="color:var(--dim);">--base</code>, <code style="color:var(--dim);">track --parent</code>, <code style="color:var(--dim);">checkout</code>) accept the same short names.</p></details></div><div data-two-col="1" data-cmd-row data-search="git queue tui interactive terminal ui reorder move edit commits branches reshape queue line undo redo live preview" style="display:grid; grid-template-columns:0.9fr 1.1fr; gap:20px; padding:14px 20px; border-top:1px solid var(--line2); align-items:baseline;"><code style="font-family:'JetBrains Mono',monospace; font-size:15.5px; color:var(--text); white-space:pre-wrap;">git queue tui</code><span style="font-size:16px; color:var(--muted);">Interactively reshape the current queue line in a full terminal UI — reorder, reword, split and move commits, add branches, with live preview and undo.</span><details style="grid-column:1 / -1; margin-top:8px;"><summary style="cursor:pointer; color:var(--green); font-family:'JetBrains Mono',monospace; font-size:13.5px;">learn more</summary><p style="margin:8px 0 2px; font-size:15.5px; line-height:1.6; color:var(--muted);">Opens a ratatui interface over the current queue line: the commits and their branches on the left, with optional message and diff panes on the right (each toggleable; drag the dividers to resize). Reorder by picking a commit up with <code style="color:var(--dim);">Space</code>, moving the insertion cursor with <code style="color:var(--dim);">j</code>/<code style="color:var(--dim);">k</code>, and placing it with <code style="color:var(--dim);">Enter</code> — the rebase runs once, on place, not per keystroke. Reword, split, squash, add branches and open PR links inline; every change mutates the queue immediately with full undo/redo (<code style="color:var(--dim);">u</code>/<code style="color:var(--dim);">Ctrl-r</code>). Press <code style="color:var(--dim);">?</code> for the in-app help.</p></details></div><div data-two-col="1" data-cmd-row data-search="git queue edit split reassign commits to branches: every branch is a [name] section over the queue's commits." style="display:grid; grid-template-columns:0.9fr 1.1fr; gap:20px; padding:14px 20px; border-top:1px solid var(--line2); align-items:baseline;"><code style="font-family:'JetBrains Mono',monospace; font-size:15.5px; color:var(--text); white-space:pre-wrap;">git queue edit</code><span style="font-size:16px; color:var(--muted);">Open the whole queue in an editor: each branch is a [name] section over its commits — move the headers to reassign commits. No commit is rewritten. (alias: split)</span><div style="grid-column:1 / -1; margin-top:12px; overflow-x:auto;"><svg viewBox="0 0 414 254" role="img" style="max-width:473px; width:100%; height:auto; display:block;"><defs><marker id="qarr5" viewBox="0 0 8 8" refX="7" refY="4" markerWidth="7" markerHeight="7" orient="auto"><path d="M0,0 L8,4 L0,8 z" fill="var(--faint)"/></marker></defs><text x="14" y="22" font-family="'IBM Plex Sans',sans-serif" font-size="10.5" font-style="italic" fill="var(--faint)">before — one big branch</text><circle cx="90" cy="72" r="11" fill="var(--surface)" stroke="var(--faint)" stroke-width="1.6"/><text x="90" y="75.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="10" fill="var(--text)">M</text><line x1="90" y1="84" x2="90" y2="92" stroke="var(--line)" stroke-width="1"/><rect x="70.0" y="92" width="40" height="18" rx="5" fill="var(--inset)" stroke="var(--line)"/><text x="90" y="104.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="9.5" fill="var(--muted)">main</text><line x1="164" y1="72" x2="109" y2="72" stroke="var(--faint)" stroke-width="1.4" marker-end="url(#qarr5)"/><circle cx="178" cy="72" r="11" fill="var(--surface)" stroke="var(--dim)" stroke-width="1.6"/><text x="178" y="75.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="10" fill="var(--text)">A</text><line x1="252" y1="72" x2="197" y2="72" stroke="var(--faint)" stroke-width="1.4" marker-end="url(#qarr5)"/><circle cx="266" cy="72" r="11" fill="var(--surface)" stroke="var(--dim)" stroke-width="1.6"/><text x="266" y="75.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="10" fill="var(--text)">B</text><line x1="340" y1="72" x2="285" y2="72" stroke="var(--faint)" stroke-width="1.4" marker-end="url(#qarr5)"/><circle cx="354" cy="72" r="11" fill="var(--surface)" stroke="var(--dim)" stroke-width="1.6"/><text x="354" y="75.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="10" fill="var(--text)">C</text><line x1="354" y1="84" x2="354" y2="92" stroke="var(--line)" stroke-width="1"/><rect x="337.5" y="92" width="33" height="18" rx="5" fill="var(--inset)" stroke="var(--line)"/><text x="354" y="104.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="9.5" fill="var(--muted)">big</text><text x="14" y="154" font-family="'IBM Plex Sans',sans-serif" font-size="10.5" font-style="italic" fill="var(--faint)">after — branch refs placed at the editor's boundaries</text><circle cx="90" cy="204" r="11" fill="var(--surface)" stroke="var(--faint)" stroke-width="1.6"/><text x="90" y="207.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="10" fill="var(--text)">M</text><line x1="90" y1="216" x2="90" y2="224" stroke="var(--line)" stroke-width="1"/><rect x="70.0" y="224" width="40" height="18" rx="5" fill="var(--inset)" stroke="var(--line)"/><text x="90" y="236.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="9.5" fill="var(--muted)">main</text><line x1="164" y1="204" x2="109" y2="204" stroke="var(--faint)" stroke-width="1.4" marker-end="url(#qarr5)"/><circle cx="178" cy="204" r="11" fill="var(--surface)" stroke="var(--dim)" stroke-width="1.6"/><text x="178" y="207.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="10" fill="var(--text)">A</text><line x1="178" y1="216" x2="178" y2="224" stroke="var(--line)" stroke-width="1"/><rect x="133.5" y="224" width="89" height="18" rx="5" fill="var(--inset)" stroke="var(--line)"/><text x="178" y="236.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="9.5" fill="var(--muted)">queue/f/api</text><line x1="252" y1="204" x2="197" y2="204" stroke="var(--faint)" stroke-width="1.4" marker-end="url(#qarr5)"/><circle cx="266" cy="204" r="11" fill="var(--surface)" stroke="var(--dim)" stroke-width="1.6"/><text x="266" y="207.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="10" fill="var(--text)">B</text><line x1="266" y1="216" x2="266" y2="224" stroke="var(--line)" stroke-width="1"/><rect x="221.5" y="224" width="89" height="18" rx="5" fill="var(--inset)" stroke="var(--line)"/><text x="266" y="236.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="9.5" fill="var(--muted)">queue/f/svc</text><line x1="340" y1="204" x2="285" y2="204" stroke="var(--faint)" stroke-width="1.4" marker-end="url(#qarr5)"/><circle cx="354" cy="204" r="11" fill="var(--surface)" stroke="var(--dim)" stroke-width="1.6"/><text x="354" y="207.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="10" fill="var(--text)">C</text><line x1="354" y1="216" x2="354" y2="224" stroke="var(--line)" stroke-width="1"/><rect x="313.0" y="224" width="82" height="18" rx="5" fill="var(--inset)" stroke="var(--line)"/><text x="354" y="236.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="9.5" fill="var(--muted)">queue/f/ui</text></svg></div><details style="grid-column:1 / -1; margin-top:8px;"><summary style="cursor:pointer; color:var(--green); font-family:'JetBrains Mono',monospace; font-size:13.5px;">learn more</summary><p style="margin:8px 0 2px; font-size:15.5px; line-height:1.6; color:var(--muted);">Opens the whole queue in an editor: every branch is a <code style="color:var(--dim);">[name]</code> section header, with its commits listed beneath — the first section is the front of the queue (merges first). The commit sequence is fixed: commits cannot be reordered or deleted, only assigned to branches. Move, rename, add, or remove the header lines: add one to split a branch in two, remove one to dissolve a branch into its neighbours, move one to shift commits between adjacent branches. Branch refs simply move to the new section boundaries; no commit is rewritten, so PRs keep their history. Removed branches are deleted (their commits are covered by the remaining branches). Short header names resolve within the queue; new ones are created as <code style="color:var(--dim);">queue/<name>/<short></code> in namespaced queues. Also works on an untracked branch: it becomes one section over trunk, ready to divide</p></details></div><div data-two-col="1" data-cmd-row data-search="git queue track [--parent <b>] adopt the current branch into a queue (parent defaults to trunk)." style="display:grid; grid-template-columns:0.9fr 1.1fr; gap:20px; padding:14px 20px; border-top:1px solid var(--line2); align-items:baseline;"><code style="font-family:'JetBrains Mono',monospace; font-size:15.5px; color:var(--text); white-space:pre-wrap;">git queue track [--parent <b>]</code><span style="font-size:16px; color:var(--muted);">Adopt the current branch into a queue (parent defaults to trunk); offers to stamp Stable-Commit-Ids onto its commits (asks first — hashes change). --edit then opens the queue editor to divide the commits into multiple branches.</span><details style="grid-column:1 / -1; margin-top:8px;"><summary style="cursor:pointer; color:var(--green); font-family:'JetBrains Mono',monospace; font-size:13.5px;">learn more</summary><p style="margin:8px 0 2px; font-size:15.5px; line-height:1.6; color:var(--muted);">Adopts an existing branch into a queue: records its parent (trunk by default, or <code style="color:var(--dim);">--parent</code>), asks for a queue name when starting a new one, and offers to stamp Stable-Commit-Ids onto the adopted commits — asking first because stamping rewrites them (hashes change; an already-pushed branch will be force-pushed with lease on the next sync). <code style="color:var(--dim);">--stamp-ids</code>/<code style="color:var(--dim);">--no-stamp-ids</code> decide non-interactively, and <code style="color:var(--dim);">--edit</code> continues straight into the queue editor to divide the adopted commits into multiple branches.</p></details></div><div data-two-col="1" data-cmd-row data-search="git queue untrack forget the current branch's queue metadata." style="display:grid; grid-template-columns:0.9fr 1.1fr; gap:20px; padding:14px 20px; border-top:1px solid var(--line2); align-items:baseline;"><code style="font-family:'JetBrains Mono',monospace; font-size:15.5px; color:var(--text); white-space:pre-wrap;">git queue untrack</code><span style="font-size:16px; color:var(--muted);">Forget the current branch's queue metadata.</span><details style="grid-column:1 / -1; margin-top:8px;"><summary style="cursor:pointer; color:var(--green); font-family:'JetBrains Mono',monospace; font-size:13.5px;">learn more</summary><p style="margin:8px 0 2px; font-size:15.5px; line-height:1.6; color:var(--muted);">Forgets the current branch's queue metadata (parent, anchor, cached PR number, descriptions, membership). The branch and its commits are untouched — this only removes it from the queue's structure.</p></details></div></div></div><div data-cmd-group style="margin-bottom:26px;"><div style="font-family:'JetBrains Mono',monospace; font-size:12px; font-weight:700; letter-spacing:0.14em; text-transform:uppercase; color:var(--green); margin-bottom:10px;">Navigate & inspect</div><div class="gs-scroll" style="border:1px solid var(--line); border-radius:12px; overflow:hidden; background:var(--surface);"><div data-two-col="1" data-cmd-row data-search="git queue status (ls, list) show the queue tree with pr numbers and states." style="display:grid; grid-template-columns:0.9fr 1.1fr; gap:20px; padding:14px 20px; border-top:1px solid var(--line2); align-items:baseline;"><code style="font-family:'JetBrains Mono',monospace; font-size:15.5px; color:var(--text); white-space:pre-wrap;">git queue status</code><span style="font-size:16px; color:var(--muted);">Show the queue tree with PR numbers and states.</span><details style="grid-column:1 / -1; margin-top:8px;"><summary style="cursor:pointer; color:var(--green); font-family:'JetBrains Mono',monospace; font-size:13.5px;">learn more</summary><p style="margin:8px 0 2px; font-size:15.5px; line-height:1.6; color:var(--muted);">Read-only view of the current line: one row per branch, front of the queue at the bottom, with PR number and state, a left-margin marker on the checked-out branch, and — when a branch holds persisted conflict markers — a warning listing the conflicting files. Markers are detected live, so the warning can never be stale. Output is colourised on a terminal, and PR numbers are clickable links in terminals that render hyperlinks.</p></details></div><div data-two-col="1" data-cmd-row data-search="git queue log the status tree with each branch's commits indented beneath it, newest first, each prefixed by its abbreviated queue-id." style="display:grid; grid-template-columns:0.9fr 1.1fr; gap:20px; padding:14px 20px; border-top:1px solid var(--line2); align-items:baseline;"><code style="font-family:'JetBrains Mono',monospace; font-size:15.5px; color:var(--text); white-space:pre-wrap;">git queue log</code><span style="font-size:16px; color:var(--muted);">The status tree with each branch's commits indented beneath it, newest first, each prefixed by its abbreviated Stable-Commit-Id.</span><details style="grid-column:1 / -1; margin-top:8px;"><summary style="cursor:pointer; color:var(--green); font-family:'JetBrains Mono',monospace; font-size:13.5px;">learn more</summary><p style="margin:8px 0 2px; font-size:15.5px; line-height:1.6; color:var(--muted);"><code style="color:var(--dim);">status</code> with one more level of depth: each branch's commits are listed beneath it, newest first, prefixed with the abbreviated Stable-Commit-Id (<code style="color:var(--dim);">(no id)</code> for unstamped commits). Those abbreviations are accepted by every command that takes a commit, so <code style="color:var(--dim);">log</code> is the natural way to find the argument for <code style="color:var(--dim);">move</code>, <code style="color:var(--dim);">checkout</code> or <code style="color:var(--dim);">reword</code>.</p></details></div><div data-two-col="1" data-cmd-row data-search="git queue up (next) check out the child branch." style="display:grid; grid-template-columns:0.9fr 1.1fr; gap:20px; padding:14px 20px; border-top:1px solid var(--line2); align-items:baseline;"><code style="font-family:'JetBrains Mono',monospace; font-size:15.5px; color:var(--text); white-space:pre-wrap;">git queue up (next)</code><span style="font-size:16px; color:var(--muted);">Check out the child branch.</span><details style="grid-column:1 / -1; margin-top:8px;"><summary style="cursor:pointer; color:var(--green); font-family:'JetBrains Mono',monospace; font-size:13.5px;">learn more</summary><p style="margin:8px 0 2px; font-size:15.5px; line-height:1.6; color:var(--muted);">Checks out the child branch — one step toward the back of the queue. Errors helpfully at the top or at a fork (listing the children so you can pick one).</p></details></div><div data-two-col="1" data-cmd-row data-search="git queue down (prev) check out the parent branch." style="display:grid; grid-template-columns:0.9fr 1.1fr; gap:20px; padding:14px 20px; border-top:1px solid var(--line2); align-items:baseline;"><code style="font-family:'JetBrains Mono',monospace; font-size:15.5px; color:var(--text); white-space:pre-wrap;">git queue down (prev)</code><span style="font-size:16px; color:var(--muted);">Check out the parent branch.</span><details style="grid-column:1 / -1; margin-top:8px;"><summary style="cursor:pointer; color:var(--green); font-family:'JetBrains Mono',monospace; font-size:13.5px;">learn more</summary><p style="margin:8px 0 2px; font-size:15.5px; line-height:1.6; color:var(--muted);">Checks out the parent branch — one step toward the front of the queue.</p></details></div><div data-two-col="1" data-cmd-row data-search="git queue checkout detach head on a queue commit sha or stable-commit-id to edit it in place; commit inserts, amend revises, the rest rebases on top." style="display:grid; grid-template-columns:0.9fr 1.1fr; gap:20px; padding:14px 20px; border-top:1px solid var(--line2); align-items:baseline;"><code style="font-family:'JetBrains Mono',monospace; font-size:15.5px; color:var(--text); white-space:pre-wrap;">git queue checkout <commit></code><span style="font-size:16px; color:var(--muted);">Detach HEAD on a queue commit (SHA or Stable-Commit-Id) to edit in place: git commit inserts after it, --amend revises it (id kept); the rest of the queue rebases on top.</span><div style="grid-column:1 / -1; margin-top:12px; overflow-x:auto;"><svg viewBox="0 0 502 386" role="img" style="max-width:574px; width:100%; height:auto; display:block;"><defs><marker id="qarr7" viewBox="0 0 8 8" refX="7" refY="4" markerWidth="7" markerHeight="7" orient="auto"><path d="M0,0 L8,4 L0,8 z" fill="var(--faint)"/></marker></defs><text x="14" y="22" font-family="'IBM Plex Sans',sans-serif" font-size="10.5" font-style="italic" fill="var(--faint)">git queue checkout A — detached mid-queue</text><circle cx="90" cy="72" r="11" fill="var(--surface)" stroke="var(--faint)" stroke-width="1.6"/><text x="90" y="75.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="10" fill="var(--text)">M</text><line x1="90" y1="84" x2="90" y2="92" stroke="var(--line)" stroke-width="1"/><rect x="70.0" y="92" width="40" height="18" rx="5" fill="var(--inset)" stroke="var(--line)"/><text x="90" y="104.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="9.5" fill="var(--muted)">main</text><line x1="164" y1="72" x2="109" y2="72" stroke="var(--faint)" stroke-width="1.4" marker-end="url(#qarr7)"/><circle cx="178" cy="72" r="11" fill="var(--surface)" stroke="var(--dim)" stroke-width="1.6"/><text x="178" y="75.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="10" fill="var(--text)">A</text><rect x="161" y="32" width="34" height="15" rx="4" fill="var(--surface)" stroke="var(--green)"/><text x="178" y="43" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="8.5" fill="var(--green)">HEAD</text><line x1="178" y1="47" x2="178" y2="59" stroke="var(--green)" stroke-width="1"/><line x1="252" y1="72" x2="197" y2="72" stroke="var(--faint)" stroke-width="1.4" marker-end="url(#qarr7)"/><circle cx="266" cy="72" r="11" fill="var(--surface)" stroke="var(--dim)" stroke-width="1.6"/><text x="266" y="75.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="10" fill="var(--text)">B</text><line x1="266" y1="84" x2="266" y2="92" stroke="var(--line)" stroke-width="1"/><rect x="249.5" y="92" width="33" height="18" rx="5" fill="var(--inset)" stroke="var(--line)"/><text x="266" y="104.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="9.5" fill="var(--muted)">api</text><line x1="340" y1="72" x2="285" y2="72" stroke="var(--faint)" stroke-width="1.4" marker-end="url(#qarr7)"/><circle cx="354" cy="72" r="11" fill="var(--surface)" stroke="var(--dim)" stroke-width="1.6"/><text x="354" y="75.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="10" fill="var(--text)">C</text><line x1="354" y1="84" x2="354" y2="92" stroke="var(--line)" stroke-width="1"/><rect x="339.0" y="92" width="30" height="18" rx="5" fill="var(--inset)" stroke="var(--line)"/><text x="354" y="104.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="9.5" fill="var(--muted)">ui</text><text x="14" y="154" font-family="'IBM Plex Sans',sans-serif" font-size="10.5" font-style="italic" fill="var(--faint)">git commit — N inserted after A; the rest rebased</text><circle cx="90" cy="204" r="11" fill="var(--surface)" stroke="var(--faint)" stroke-width="1.6"/><text x="90" y="207.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="10" fill="var(--text)">M</text><line x1="90" y1="216" x2="90" y2="224" stroke="var(--line)" stroke-width="1"/><rect x="70.0" y="224" width="40" height="18" rx="5" fill="var(--inset)" stroke="var(--line)"/><text x="90" y="236.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="9.5" fill="var(--muted)">main</text><line x1="164" y1="204" x2="109" y2="204" stroke="var(--faint)" stroke-width="1.4" marker-end="url(#qarr7)"/><circle cx="178" cy="204" r="11" fill="var(--surface)" stroke="var(--dim)" stroke-width="1.6"/><text x="178" y="207.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="10" fill="var(--text)">A</text><line x1="252" y1="204" x2="197" y2="204" stroke="var(--faint)" stroke-width="1.4" marker-end="url(#qarr7)"/><circle cx="266" cy="204" r="11" fill="color-mix(in srgb, var(--green) 18%, var(--surface))" stroke="var(--green)" stroke-width="1.6"/><text x="266" y="207.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="10" fill="var(--text)">N</text><rect x="249" y="164" width="34" height="15" rx="4" fill="var(--surface)" stroke="var(--green)"/><text x="266" y="175" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="8.5" fill="var(--green)">HEAD</text><line x1="266" y1="179" x2="266" y2="191" stroke="var(--green)" stroke-width="1"/><line x1="340" y1="204" x2="285" y2="204" stroke="var(--faint)" stroke-width="1.4" marker-end="url(#qarr7)"/><circle cx="354" cy="204" r="11" fill="var(--surface)" stroke="var(--green)" stroke-width="1.6" stroke-dasharray="3 2"/><text x="354" y="207.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="10" fill="var(--text)">B′</text><line x1="354" y1="216" x2="354" y2="224" stroke="var(--line)" stroke-width="1"/><rect x="337.5" y="224" width="33" height="18" rx="5" fill="var(--inset)" stroke="var(--line)"/><text x="354" y="236.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="9.5" fill="var(--muted)">api</text><line x1="428" y1="204" x2="373" y2="204" stroke="var(--faint)" stroke-width="1.4" marker-end="url(#qarr7)"/><circle cx="442" cy="204" r="11" fill="var(--surface)" stroke="var(--green)" stroke-width="1.6" stroke-dasharray="3 2"/><text x="442" y="207.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="10" fill="var(--text)">C′</text><line x1="442" y1="216" x2="442" y2="224" stroke="var(--line)" stroke-width="1"/><rect x="427.0" y="224" width="30" height="18" rx="5" fill="var(--inset)" stroke="var(--line)"/><text x="442" y="236.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="9.5" fill="var(--muted)">ui</text><text x="14" y="286" font-family="'IBM Plex Sans',sans-serif" font-size="10.5" font-style="italic" fill="var(--faint)">git commit --amend — A revised, id kept; the rest rebased</text><circle cx="90" cy="336" r="11" fill="var(--surface)" stroke="var(--faint)" stroke-width="1.6"/><text x="90" y="339.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="10" fill="var(--text)">M</text><line x1="90" y1="348" x2="90" y2="356" stroke="var(--line)" stroke-width="1"/><rect x="70.0" y="356" width="40" height="18" rx="5" fill="var(--inset)" stroke="var(--line)"/><text x="90" y="368.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="9.5" fill="var(--muted)">main</text><line x1="164" y1="336" x2="109" y2="336" stroke="var(--faint)" stroke-width="1.4" marker-end="url(#qarr7)"/><circle cx="178" cy="336" r="11" fill="var(--surface)" stroke="var(--green)" stroke-width="1.6" stroke-dasharray="3 2"/><text x="178" y="339.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="10" fill="var(--text)">A′</text><rect x="161" y="296" width="34" height="15" rx="4" fill="var(--surface)" stroke="var(--green)"/><text x="178" y="307" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="8.5" fill="var(--green)">HEAD</text><line x1="178" y1="311" x2="178" y2="323" stroke="var(--green)" stroke-width="1"/><line x1="252" y1="336" x2="197" y2="336" stroke="var(--faint)" stroke-width="1.4" marker-end="url(#qarr7)"/><circle cx="266" cy="336" r="11" fill="var(--surface)" stroke="var(--green)" stroke-width="1.6" stroke-dasharray="3 2"/><text x="266" y="339.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="10" fill="var(--text)">B′</text><line x1="266" y1="348" x2="266" y2="356" stroke="var(--line)" stroke-width="1"/><rect x="249.5" y="356" width="33" height="18" rx="5" fill="var(--inset)" stroke="var(--line)"/><text x="266" y="368.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="9.5" fill="var(--muted)">api</text><line x1="340" y1="336" x2="285" y2="336" stroke="var(--faint)" stroke-width="1.4" marker-end="url(#qarr7)"/><circle cx="354" cy="336" r="11" fill="var(--surface)" stroke="var(--green)" stroke-width="1.6" stroke-dasharray="3 2"/><text x="354" y="339.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="10" fill="var(--text)">C′</text><line x1="354" y1="348" x2="354" y2="356" stroke="var(--line)" stroke-width="1"/><rect x="339.0" y="356" width="30" height="18" rx="5" fill="var(--inset)" stroke="var(--line)"/><text x="354" y="368.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="9.5" fill="var(--muted)">ui</text></svg></div><details style="grid-column:1 / -1; margin-top:8px;"><summary style="cursor:pointer; color:var(--green); font-family:'JetBrains Mono',monospace; font-size:13.5px;">learn more</summary><p style="margin:8px 0 2px; font-size:15.5px; line-height:1.6; color:var(--muted);">Detaches HEAD on a commit of the current queue — named by SHA or Stable-Commit-Id — after validating membership and a clean stage. From there, edit and <code style="color:var(--dim);">git add</code>, then: plain <code style="color:var(--dim);">git commit</code> INSERTS a new commit right after it, while <code style="color:var(--dim);">git commit --amend</code> REVISES it (the message carries over, so its Stable-Commit-Id is preserved). Either way everything that followed rebases onto the new commit, automatically with hooks installed or via <code style="color:var(--dim);">git queue requeue</code>. HEAD stays detached at the edited commit so you can keep going; <code style="color:var(--dim);">git queue checkout <branch></code> reattaches and ends the session.</p></details></div></div></div><div data-cmd-group style="margin-bottom:26px;"><div style="font-family:'JetBrains Mono',monospace; font-size:12px; font-weight:700; letter-spacing:0.14em; text-transform:uppercase; color:var(--green); margin-bottom:10px;">Edit</div><div class="gs-scroll" style="border:1px solid var(--line); border-radius:12px; overflow:hidden; background:var(--surface);"><div data-two-col="1" data-cmd-row data-search="git queue reword [<commit>] rewrite a commit message and update descendants (defaults to head)." style="display:grid; grid-template-columns:0.9fr 1.1fr; gap:20px; padding:14px 20px; border-top:1px solid var(--line2); align-items:baseline;"><code style="font-family:'JetBrains Mono',monospace; font-size:15.5px; color:var(--text); white-space:pre-wrap;">git queue reword [<commit>]</code><span style="font-size:16px; color:var(--muted);">Rewrite a commit message and update descendants (defaults to HEAD).</span><details style="grid-column:1 / -1; margin-top:8px;"><summary style="cursor:pointer; color:var(--green); font-family:'JetBrains Mono',monospace; font-size:13.5px;">learn more</summary><p style="margin:8px 0 2px; font-size:15.5px; line-height:1.6; color:var(--muted);">Rewrites a commit's message — HEAD by default, or any queue commit named by SHA or Stable-Commit-Id — and updates every descendant (engine: <code style="color:var(--dim);">git history reword</code>; atomic, aborts cleanly on conflict). Content is untouched.</p></details></div><div data-two-col="1" data-cmd-row data-search="git queue move <commit>[..<commit>] --new-parent <commit> move a commit or inclusive range elsewhere in the queue, within a pr or across prs; the rest is requeued, conflicts persist as markers." style="display:grid; grid-template-columns:0.9fr 1.1fr; gap:20px; padding:14px 20px; border-top:1px solid var(--line2); align-items:baseline;"><code style="font-family:'JetBrains Mono',monospace; font-size:15.5px; color:var(--text); white-space:pre-wrap;">git queue move <c>[..<c>] --new-parent <c></code><span style="font-size:16px; color:var(--muted);">Move a commit (or inclusive range) elsewhere in the queue — within one PR or across PRs; commits can be named by revision or Stable-Commit-Id. The rest is requeued; conflicts persist as markers.</span><div style="grid-column:1 / -1; margin-top:12px; overflow-x:auto;"><svg viewBox="0 0 414 254" role="img" style="max-width:473px; width:100%; height:auto; display:block;"><defs><marker id="qarr4" viewBox="0 0 8 8" refX="7" refY="4" markerWidth="7" markerHeight="7" orient="auto"><path d="M0,0 L8,4 L0,8 z" fill="var(--faint)"/></marker></defs><text x="14" y="22" font-family="'IBM Plex Sans',sans-serif" font-size="10.5" font-style="italic" fill="var(--faint)">before — move B --new-parent A</text><circle cx="90" cy="72" r="11" fill="var(--surface)" stroke="var(--faint)" stroke-width="1.6"/><text x="90" y="75.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="10" fill="var(--text)">M</text><line x1="90" y1="84" x2="90" y2="92" stroke="var(--line)" stroke-width="1"/><rect x="70.0" y="92" width="40" height="18" rx="5" fill="var(--inset)" stroke="var(--line)"/><text x="90" y="104.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="9.5" fill="var(--muted)">main</text><line x1="164" y1="72" x2="109" y2="72" stroke="var(--faint)" stroke-width="1.4" marker-end="url(#qarr4)"/><circle cx="178" cy="72" r="11" fill="var(--surface)" stroke="var(--dim)" stroke-width="1.6"/><text x="178" y="75.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="10" fill="var(--text)">A</text><line x1="178" y1="84" x2="178" y2="92" stroke="var(--line)" stroke-width="1"/><rect x="161.5" y="92" width="33" height="18" rx="5" fill="var(--inset)" stroke="var(--line)"/><text x="178" y="104.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="9.5" fill="var(--muted)">api</text><line x1="252" y1="72" x2="197" y2="72" stroke="var(--faint)" stroke-width="1.4" marker-end="url(#qarr4)"/><circle cx="266" cy="72" r="11" fill="var(--surface)" stroke="var(--dim)" stroke-width="1.6"/><text x="266" y="75.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="10" fill="var(--text)">C</text><line x1="340" y1="72" x2="285" y2="72" stroke="var(--faint)" stroke-width="1.4" marker-end="url(#qarr4)"/><circle cx="354" cy="72" r="11" fill="var(--surface)" stroke="var(--dim)" stroke-width="1.6"/><text x="354" y="75.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="10" fill="var(--text)">B</text><line x1="354" y1="84" x2="354" y2="92" stroke="var(--line)" stroke-width="1"/><rect x="339.0" y="92" width="30" height="18" rx="5" fill="var(--inset)" stroke="var(--line)"/><text x="354" y="104.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="9.5" fill="var(--muted)">ui</text><text x="14" y="154" font-family="'IBM Plex Sans',sans-serif" font-size="10.5" font-style="italic" fill="var(--faint)">after — B follows A (joins api); the rest rebased</text><circle cx="90" cy="204" r="11" fill="var(--surface)" stroke="var(--faint)" stroke-width="1.6"/><text x="90" y="207.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="10" fill="var(--text)">M</text><line x1="90" y1="216" x2="90" y2="224" stroke="var(--line)" stroke-width="1"/><rect x="70.0" y="224" width="40" height="18" rx="5" fill="var(--inset)" stroke="var(--line)"/><text x="90" y="236.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="9.5" fill="var(--muted)">main</text><line x1="164" y1="204" x2="109" y2="204" stroke="var(--faint)" stroke-width="1.4" marker-end="url(#qarr4)"/><circle cx="178" cy="204" r="11" fill="var(--surface)" stroke="var(--dim)" stroke-width="1.6"/><text x="178" y="207.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="10" fill="var(--text)">A</text><line x1="252" y1="204" x2="197" y2="204" stroke="var(--faint)" stroke-width="1.4" marker-end="url(#qarr4)"/><circle cx="266" cy="204" r="11" fill="var(--surface)" stroke="var(--green)" stroke-width="1.6" stroke-dasharray="3 2"/><text x="266" y="207.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="10" fill="var(--text)">B′</text><line x1="266" y1="216" x2="266" y2="224" stroke="var(--line)" stroke-width="1"/><rect x="249.5" y="224" width="33" height="18" rx="5" fill="var(--inset)" stroke="var(--line)"/><text x="266" y="236.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="9.5" fill="var(--muted)">api</text><line x1="340" y1="204" x2="285" y2="204" stroke="var(--faint)" stroke-width="1.4" marker-end="url(#qarr4)"/><circle cx="354" cy="204" r="11" fill="var(--surface)" stroke="var(--green)" stroke-width="1.6" stroke-dasharray="3 2"/><text x="354" y="207.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="10" fill="var(--text)">C′</text><line x1="354" y1="216" x2="354" y2="224" stroke="var(--line)" stroke-width="1"/><rect x="339.0" y="224" width="30" height="18" rx="5" fill="var(--inset)" stroke="var(--line)"/><text x="354" y="236.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="9.5" fill="var(--muted)">ui</text></svg></div><details style="grid-column:1 / -1; margin-top:8px;"><summary style="cursor:pointer; color:var(--green); font-family:'JetBrains Mono',monospace; font-size:13.5px;">learn more</summary><p style="margin:8px 0 2px; font-size:15.5px; line-height:1.6; color:var(--muted);">Relocates a commit, or an inclusive <code style="color:var(--dim);"><first>..<last></code> range of consecutive commits, to directly follow <code style="color:var(--dim);">--new-parent</code> — reordering within one PR or moving work to a different PR (the commits join the branch segment their new parent belongs to). All arguments accept SHAs or Stable-Commit-Ids. The whole line is rewritten in one <code style="color:var(--dim);">git rebase --update-refs</code> pass: branch refs ride along, conflicts are persisted as markers and flagged, and passing the base branch's tip as <code style="color:var(--dim);">--new-parent</code> moves commits to the very front of the queue.</p></details></div><div data-two-col="1" data-cmd-row data-search="git queue describe [-m <text>] describe the branch/pr; becomes the pr body (opens $editor without -m)." style="display:grid; grid-template-columns:0.9fr 1.1fr; gap:20px; padding:14px 20px; border-top:1px solid var(--line2); align-items:baseline;"><code style="font-family:'JetBrains Mono',monospace; font-size:15.5px; color:var(--text); white-space:pre-wrap;">git queue describe [-m <text>]</code><span style="font-size:16px; color:var(--muted);">Describe the QUEUE; the “About this queue” section of every PR in it.</span><details style="grid-column:1 / -1; margin-top:8px;"><summary style="cursor:pointer; color:var(--green); font-family:'JetBrains Mono',monospace; font-size:13.5px;">learn more</summary><p style="margin:8px 0 2px; font-size:15.5px; line-height:1.6; color:var(--muted);">Sets the QUEUE's description — the "About this queue" section rendered into every PR of the queue on the next submit/sync. Use it for the narrative that spans the whole queue: what the series achieves and how the pieces fit. Opens <code style="color:var(--dim);">$EDITOR</code> without <code style="color:var(--dim);">-m</code>; an empty message clears it.</p></details></div><div data-two-col="1" data-cmd-row data-search="git queue describe-branch describe the branch; about this branch section of its pr." style="display:grid; grid-template-columns:0.9fr 1.1fr; gap:20px; padding:14px 20px; border-top:1px solid var(--line2); align-items:baseline;"><code style="font-family:'JetBrains Mono',monospace; font-size:15.5px; color:var(--text); white-space:pre-wrap;">git queue describe-branch [-m <text>]</code><span style="font-size:16px; color:var(--muted);">Describe the BRANCH; the “About this branch” section of its PR.</span><details style="grid-column:1 / -1; margin-top:8px;"><summary style="cursor:pointer; color:var(--green); font-family:'JetBrains Mono',monospace; font-size:13.5px;">learn more</summary><p style="margin:8px 0 2px; font-size:15.5px; line-height:1.6; color:var(--muted);">Sets the current BRANCH's description — the "About this branch" section of its PR. Use it for what this one slice does. A hand-written body on a PR adopted from before the queue existed is imported here automatically rather than overwritten. Opens <code style="color:var(--dim);">$EDITOR</code> without <code style="color:var(--dim);">-m</code>; an empty message clears it.</p></details></div><div data-two-col="1" data-cmd-row data-search="git queue name show or set the current queue name." style="display:grid; grid-template-columns:0.9fr 1.1fr; gap:20px; padding:14px 20px; border-top:1px solid var(--line2); align-items:baseline;"><code style="font-family:'JetBrains Mono',monospace; font-size:15.5px; color:var(--text); white-space:pre-wrap;">git queue name [<name>]</code><span style="font-size:16px; color:var(--muted);">Show or set the current queue's name (every queue is named; shown in PR headers).</span><details style="grid-column:1 / -1; margin-top:8px;"><summary style="cursor:pointer; color:var(--green); font-family:'JetBrains Mono',monospace; font-size:13.5px;">learn more</summary><p style="margin:8px 0 2px; font-size:15.5px; line-height:1.6; color:var(--muted);">Shows the current queue's name, or (re)names it. Every queue is named: the name appears in each PR's header, namespaces the queue's branches (<code style="color:var(--dim);">queue/<name>/<branch></code>), and keys the queue-level description and activity time. Naming records membership on every branch of the line, so branches that don't follow the <code style="color:var(--dim);">queue/<name>/…</code> convention still resolve.</p></details></div><div data-two-col="1" data-cmd-row data-search="git queue ls list every queue most recently touched first." style="display:grid; grid-template-columns:0.9fr 1.1fr; gap:20px; padding:14px 20px; border-top:1px solid var(--line2); align-items:baseline;"><code style="font-family:'JetBrains Mono',monospace; font-size:15.5px; color:var(--text); white-space:pre-wrap;">git queue ls</code><span style="font-size:16px; color:var(--muted);">List every queue in the repo, most recently touched first.</span><details style="grid-column:1 / -1; margin-top:8px;"><summary style="cursor:pointer; color:var(--green); font-family:'JetBrains Mono',monospace; font-size:13.5px;">learn more</summary><p style="margin:8px 0 2px; font-size:15.5px; line-height:1.6; color:var(--muted);">Lists every queue in the repository, most recently touched first — each with its branch roster, the first line of its description, and a marker for the queue you're on. Activity timestamps update whenever a queue operation runs, so the top entry is what you worked on last. Unnamed queues are listed with instructions to name them.</p></details></div></div></div><div data-cmd-group style="margin-bottom:26px;"><div style="font-family:'JetBrains Mono',monospace; font-size:12px; font-weight:700; letter-spacing:0.14em; text-transform:uppercase; color:var(--green); margin-bottom:6px;">Without hooks</div><p style="margin:0 0 10px; font-size:15px; color:var(--faint);">Only needed when the auto-requeue hooks (<code style="color:var(--dim);">git queue setup</code>) aren't installed — with hooks, plain <code style="color:var(--dim);">git commit</code> / <code style="color:var(--dim);">git commit --amend</code> requeue the branches behind you automatically. (<code style="color:var(--dim);">git queue amend</code> also differs on conflict: it aborts atomically instead of persisting markers.)</p><div class="gs-scroll" style="border:1px solid var(--line); border-radius:12px; overflow:hidden; background:var(--surface);"><div data-two-col="1" data-cmd-row data-search="git queue commit [-m <msg>] new commit on the current branch, then requeue all descendants onto the new tip." style="display:grid; grid-template-columns:0.9fr 1.1fr; gap:20px; padding:14px 20px; border-top:1px solid var(--line2); align-items:baseline;"><code style="font-family:'JetBrains Mono',monospace; font-size:15.5px; color:var(--text); white-space:pre-wrap;">git queue commit [-m <msg>]</code><span style="font-size:16px; color:var(--muted);">New commit on the current branch, then requeue all descendants onto the new tip.</span><div style="grid-column:1 / -1; margin-top:12px; overflow-x:auto;"><svg viewBox="0 0 326 254" role="img" style="max-width:373px; width:100%; height:auto; display:block;"><defs><marker id="qarr2" viewBox="0 0 8 8" refX="7" refY="4" markerWidth="7" markerHeight="7" orient="auto"><path d="M0,0 L8,4 L0,8 z" fill="var(--faint)"/></marker></defs><text x="14" y="22" font-family="'IBM Plex Sans',sans-serif" font-size="10.5" font-style="italic" fill="var(--faint)">before — staged changes, on api</text><circle cx="90" cy="72" r="11" fill="var(--surface)" stroke="var(--faint)" stroke-width="1.6"/><text x="90" y="75.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="10" fill="var(--text)">M</text><line x1="90" y1="84" x2="90" y2="92" stroke="var(--line)" stroke-width="1"/><rect x="70.0" y="92" width="40" height="18" rx="5" fill="var(--inset)" stroke="var(--line)"/><text x="90" y="104.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="9.5" fill="var(--muted)">main</text><line x1="164" y1="72" x2="109" y2="72" stroke="var(--faint)" stroke-width="1.4" marker-end="url(#qarr2)"/><circle cx="178" cy="72" r="11" fill="var(--surface)" stroke="var(--dim)" stroke-width="1.6"/><text x="178" y="75.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="10" fill="var(--text)">A</text><line x1="178" y1="84" x2="178" y2="92" stroke="var(--line)" stroke-width="1"/><rect x="161.5" y="92" width="33" height="18" rx="5" fill="var(--inset)" stroke="var(--line)"/><text x="178" y="104.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="9.5" fill="var(--muted)">api</text><line x1="252" y1="72" x2="197" y2="72" stroke="var(--faint)" stroke-width="1.4" marker-end="url(#qarr2)"/><circle cx="266" cy="72" r="11" fill="var(--surface)" stroke="var(--dim)" stroke-width="1.6"/><text x="266" y="75.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="10" fill="var(--text)">B</text><line x1="266" y1="84" x2="266" y2="92" stroke="var(--line)" stroke-width="1"/><rect x="251.0" y="92" width="30" height="18" rx="5" fill="var(--inset)" stroke="var(--line)"/><text x="266" y="104.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="9.5" fill="var(--muted)">ui</text><text x="14" y="154" font-family="'IBM Plex Sans',sans-serif" font-size="10.5" font-style="italic" fill="var(--faint)">after — A rewritten in place; ui follows</text><circle cx="90" cy="204" r="11" fill="var(--surface)" stroke="var(--faint)" stroke-width="1.6"/><text x="90" y="207.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="10" fill="var(--text)">M</text><line x1="90" y1="216" x2="90" y2="224" stroke="var(--line)" stroke-width="1"/><rect x="70.0" y="224" width="40" height="18" rx="5" fill="var(--inset)" stroke="var(--line)"/><text x="90" y="236.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="9.5" fill="var(--muted)">main</text><line x1="164" y1="204" x2="109" y2="204" stroke="var(--faint)" stroke-width="1.4" marker-end="url(#qarr2)"/><circle cx="178" cy="204" r="11" fill="var(--surface)" stroke="var(--green)" stroke-width="1.6" stroke-dasharray="3 2"/><text x="178" y="207.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="10" fill="var(--text)">A′</text><line x1="178" y1="216" x2="178" y2="224" stroke="var(--line)" stroke-width="1"/><rect x="161.5" y="224" width="33" height="18" rx="5" fill="var(--inset)" stroke="var(--line)"/><text x="178" y="236.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="9.5" fill="var(--muted)">api</text><line x1="252" y1="204" x2="197" y2="204" stroke="var(--faint)" stroke-width="1.4" marker-end="url(#qarr2)"/><circle cx="266" cy="204" r="11" fill="var(--surface)" stroke="var(--green)" stroke-width="1.6" stroke-dasharray="3 2"/><text x="266" y="207.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="10" fill="var(--text)">B′</text><line x1="266" y1="216" x2="266" y2="224" stroke="var(--line)" stroke-width="1"/><rect x="251.0" y="224" width="30" height="18" rx="5" fill="var(--inset)" stroke="var(--line)"/><text x="266" y="236.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="9.5" fill="var(--muted)">ui</text></svg></div><div style="grid-column:1 / -1; margin-top:12px; overflow-x:auto;"><svg viewBox="0 0 414 254" role="img" style="max-width:473px; width:100%; height:auto; display:block;"><defs><marker id="qarr1" viewBox="0 0 8 8" refX="7" refY="4" markerWidth="7" markerHeight="7" orient="auto"><path d="M0,0 L8,4 L0,8 z" fill="var(--faint)"/></marker></defs><text x="14" y="22" font-family="'IBM Plex Sans',sans-serif" font-size="10.5" font-style="italic" fill="var(--faint)">before</text><circle cx="90" cy="72" r="11" fill="var(--surface)" stroke="var(--faint)" stroke-width="1.6"/><text x="90" y="75.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="10" fill="var(--text)">M</text><line x1="90" y1="84" x2="90" y2="92" stroke="var(--line)" stroke-width="1"/><rect x="70.0" y="92" width="40" height="18" rx="5" fill="var(--inset)" stroke="var(--line)"/><text x="90" y="104.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="9.5" fill="var(--muted)">main</text><line x1="164" y1="72" x2="109" y2="72" stroke="var(--faint)" stroke-width="1.4" marker-end="url(#qarr1)"/><circle cx="178" cy="72" r="11" fill="var(--surface)" stroke="var(--dim)" stroke-width="1.6"/><text x="178" y="75.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="10" fill="var(--text)">A</text><line x1="178" y1="84" x2="178" y2="92" stroke="var(--line)" stroke-width="1"/><rect x="161.5" y="92" width="33" height="18" rx="5" fill="var(--inset)" stroke="var(--line)"/><text x="178" y="104.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="9.5" fill="var(--muted)">api</text><line x1="252" y1="72" x2="197" y2="72" stroke="var(--faint)" stroke-width="1.4" marker-end="url(#qarr1)"/><circle cx="266" cy="72" r="11" fill="var(--surface)" stroke="var(--dim)" stroke-width="1.6"/><text x="266" y="75.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="10" fill="var(--text)">B</text><line x1="266" y1="84" x2="266" y2="92" stroke="var(--line)" stroke-width="1"/><rect x="251.0" y="92" width="30" height="18" rx="5" fill="var(--inset)" stroke="var(--line)"/><text x="266" y="104.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="9.5" fill="var(--muted)">ui</text><text x="14" y="154" font-family="'IBM Plex Sans',sans-serif" font-size="10.5" font-style="italic" fill="var(--faint)">after — new commit N on api; ui requeued on top</text><circle cx="90" cy="204" r="11" fill="var(--surface)" stroke="var(--faint)" stroke-width="1.6"/><text x="90" y="207.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="10" fill="var(--text)">M</text><line x1="90" y1="216" x2="90" y2="224" stroke="var(--line)" stroke-width="1"/><rect x="70.0" y="224" width="40" height="18" rx="5" fill="var(--inset)" stroke="var(--line)"/><text x="90" y="236.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="9.5" fill="var(--muted)">main</text><line x1="164" y1="204" x2="109" y2="204" stroke="var(--faint)" stroke-width="1.4" marker-end="url(#qarr1)"/><circle cx="178" cy="204" r="11" fill="var(--surface)" stroke="var(--dim)" stroke-width="1.6"/><text x="178" y="207.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="10" fill="var(--text)">A</text><line x1="252" y1="204" x2="197" y2="204" stroke="var(--faint)" stroke-width="1.4" marker-end="url(#qarr1)"/><circle cx="266" cy="204" r="11" fill="color-mix(in srgb, var(--green) 18%, var(--surface))" stroke="var(--green)" stroke-width="1.6"/><text x="266" y="207.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="10" fill="var(--text)">N</text><line x1="266" y1="216" x2="266" y2="224" stroke="var(--line)" stroke-width="1"/><rect x="249.5" y="224" width="33" height="18" rx="5" fill="var(--inset)" stroke="var(--line)"/><text x="266" y="236.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="9.5" fill="var(--muted)">api</text><line x1="340" y1="204" x2="285" y2="204" stroke="var(--faint)" stroke-width="1.4" marker-end="url(#qarr1)"/><circle cx="354" cy="204" r="11" fill="var(--surface)" stroke="var(--green)" stroke-width="1.6" stroke-dasharray="3 2"/><text x="354" y="207.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="10" fill="var(--text)">B′</text><line x1="354" y1="216" x2="354" y2="224" stroke="var(--line)" stroke-width="1"/><rect x="339.0" y="224" width="30" height="18" rx="5" fill="var(--inset)" stroke="var(--line)"/><text x="354" y="236.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="9.5" fill="var(--muted)">ui</text></svg></div><details style="grid-column:1 / -1; margin-top:8px;"><summary style="cursor:pointer; color:var(--green); font-family:'JetBrains Mono',monospace; font-size:13.5px;">learn more</summary><p style="margin:8px 0 2px; font-size:15.5px; line-height:1.6; color:var(--muted);">Commits like <code style="color:var(--dim);">git commit</code>, then requeues every descendant branch onto the new tip in one atomic pass (engine: <code style="color:var(--dim);">git replay</code>), so the branches behind yours never go stale. Stamps a Stable-Commit-Id if the commit-msg hook didn't. With hooks installed, plain <code style="color:var(--dim);">git commit</code> behaves the same — this command exists for hookless repositories and for scripting.</p></details></div><div data-two-col="1" data-cmd-row data-search="git queue amend fold staged changes into the current commit and update every descendant." style="display:grid; grid-template-columns:0.9fr 1.1fr; gap:20px; padding:14px 20px; border-top:1px solid var(--line2); align-items:baseline;"><code style="font-family:'JetBrains Mono',monospace; font-size:15.5px; color:var(--text); white-space:pre-wrap;">git queue amend</code><span style="font-size:16px; color:var(--muted);">Fold staged changes into the current commit and update every descendant.</span><details style="grid-column:1 / -1; margin-top:8px;"><summary style="cursor:pointer; color:var(--green); font-family:'JetBrains Mono',monospace; font-size:13.5px;">learn more</summary><p style="margin:8px 0 2px; font-size:15.5px; line-height:1.6; color:var(--muted);">Folds the STAGED changes into the current branch's tip commit and updates every descendant, atomically (engine: <code style="color:var(--dim);">git history fixup</code>): if propagating would conflict with a descendant, it aborts and changes nothing — it cannot leave conflict markers. This is the everyday tool for addressing review feedback on a PR that has others queued behind it. The commit message, and with it the Stable-Commit-Id, is preserved.</p></details></div><div data-two-col="1" data-cmd-row data-search="git queue requeue (restack) requeue the current branch's descendants onto its tip." style="display:grid; grid-template-columns:0.9fr 1.1fr; gap:20px; padding:14px 20px; border-top:1px solid var(--line2); align-items:baseline;"><code style="font-family:'JetBrains Mono',monospace; font-size:15.5px; color:var(--text); white-space:pre-wrap;">git queue requeue (restack)</code><span style="font-size:16px; color:var(--muted);">Requeue the current branch's descendants onto its tip.</span><div style="grid-column:1 / -1; margin-top:12px; overflow-x:auto;"><svg viewBox="0 0 414 254" role="img" style="max-width:473px; width:100%; height:auto; display:block;"><defs><marker id="qarr3" viewBox="0 0 8 8" refX="7" refY="4" markerWidth="7" markerHeight="7" orient="auto"><path d="M0,0 L8,4 L0,8 z" fill="var(--faint)"/></marker></defs><text x="14" y="22" font-family="'IBM Plex Sans',sans-serif" font-size="10.5" font-style="italic" fill="var(--faint)">before — api gained N; ui still parented on A</text><circle cx="90" cy="72" r="11" fill="var(--surface)" stroke="var(--faint)" stroke-width="1.6"/><text x="90" y="75.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="10" fill="var(--text)">M</text><line x1="90" y1="84" x2="90" y2="92" stroke="var(--line)" stroke-width="1"/><rect x="70.0" y="92" width="40" height="18" rx="5" fill="var(--inset)" stroke="var(--line)"/><text x="90" y="104.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="9.5" fill="var(--muted)">main</text><line x1="164" y1="72" x2="109" y2="72" stroke="var(--faint)" stroke-width="1.4" marker-end="url(#qarr3)"/><circle cx="178" cy="72" r="11" fill="var(--surface)" stroke="var(--dim)" stroke-width="1.6"/><text x="178" y="75.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="10" fill="var(--text)">A</text><line x1="252" y1="72" x2="197" y2="72" stroke="var(--faint)" stroke-width="1.4" marker-end="url(#qarr3)"/><circle cx="266" cy="72" r="11" fill="color-mix(in srgb, var(--green) 18%, var(--surface))" stroke="var(--green)" stroke-width="1.6"/><text x="266" y="75.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="10" fill="var(--text)">N</text><line x1="266" y1="84" x2="266" y2="92" stroke="var(--line)" stroke-width="1"/><rect x="249.5" y="92" width="33" height="18" rx="5" fill="var(--inset)" stroke="var(--line)"/><text x="266" y="104.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="9.5" fill="var(--muted)">api</text><line x1="340" y1="72" x2="285" y2="72" stroke="var(--faint)" stroke-width="1.4" marker-end="url(#qarr3)"/><circle cx="354" cy="72" r="11" fill="var(--surface)" stroke="var(--dim)" stroke-width="1.6"/><text x="354" y="75.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="10" fill="var(--text)">B</text><line x1="354" y1="84" x2="354" y2="92" stroke="var(--line)" stroke-width="1"/><rect x="339.0" y="92" width="30" height="18" rx="5" fill="var(--inset)" stroke="var(--line)"/><text x="354" y="104.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="9.5" fill="var(--muted)">ui</text><text x="14" y="154" font-family="'IBM Plex Sans',sans-serif" font-size="10.5" font-style="italic" fill="var(--faint)">after — ui's commits replayed onto api's tip</text><circle cx="90" cy="204" r="11" fill="var(--surface)" stroke="var(--faint)" stroke-width="1.6"/><text x="90" y="207.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="10" fill="var(--text)">M</text><line x1="90" y1="216" x2="90" y2="224" stroke="var(--line)" stroke-width="1"/><rect x="70.0" y="224" width="40" height="18" rx="5" fill="var(--inset)" stroke="var(--line)"/><text x="90" y="236.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="9.5" fill="var(--muted)">main</text><line x1="164" y1="204" x2="109" y2="204" stroke="var(--faint)" stroke-width="1.4" marker-end="url(#qarr3)"/><circle cx="178" cy="204" r="11" fill="var(--surface)" stroke="var(--dim)" stroke-width="1.6"/><text x="178" y="207.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="10" fill="var(--text)">A</text><line x1="252" y1="204" x2="197" y2="204" stroke="var(--faint)" stroke-width="1.4" marker-end="url(#qarr3)"/><circle cx="266" cy="204" r="11" fill="var(--surface)" stroke="var(--dim)" stroke-width="1.6"/><text x="266" y="207.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="10" fill="var(--text)">N</text><line x1="266" y1="216" x2="266" y2="224" stroke="var(--line)" stroke-width="1"/><rect x="249.5" y="224" width="33" height="18" rx="5" fill="var(--inset)" stroke="var(--line)"/><text x="266" y="236.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="9.5" fill="var(--muted)">api</text><line x1="340" y1="204" x2="285" y2="204" stroke="var(--faint)" stroke-width="1.4" marker-end="url(#qarr3)"/><circle cx="354" cy="204" r="11" fill="var(--surface)" stroke="var(--green)" stroke-width="1.6" stroke-dasharray="3 2"/><text x="354" y="207.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="10" fill="var(--text)">B′</text><line x1="354" y1="216" x2="354" y2="224" stroke="var(--line)" stroke-width="1"/><rect x="339.0" y="224" width="30" height="18" rx="5" fill="var(--inset)" stroke="var(--line)"/><text x="354" y="236.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="9.5" fill="var(--muted)">ui</text></svg></div><details style="grid-column:1 / -1; margin-top:8px;"><summary style="cursor:pointer; color:var(--green); font-family:'JetBrains Mono',monospace; font-size:13.5px;">learn more</summary><p style="margin:8px 0 2px; font-size:15.5px; line-height:1.6; color:var(--muted);">The repair primitive: makes every descendant of the current branch consistent with its tip — nothing else. No network, no PR edits, no pruning. It is what the hooks run after a plain <code style="color:var(--dim);">git commit</code>/<code style="color:var(--dim);">--amend</code> (<code style="color:var(--dim);">--auto</code> stays silent when there is nothing to do), and the only command that reintegrates a <code style="color:var(--dim);">git queue checkout</code> editing session when hooks aren't installed. Reach for it manually after hand-made history surgery (cherry-picks, resets) leaves the branches above you stale.</p></details></div></div></div><div data-cmd-group style="margin-bottom:26px;"><div style="font-family:'JetBrains Mono',monospace; font-size:12px; font-weight:700; letter-spacing:0.14em; text-transform:uppercase; color:var(--green); margin-bottom:10px;">Remote & PRs</div><div class="gs-scroll" style="border:1px solid var(--line); border-radius:12px; overflow:hidden; background:var(--surface);"><div data-two-col="1" data-cmd-row data-search="git queue sync [--no-push] pull remote, drop merged-pr branches (reparenting children), requeue onto the base, push with --force-with-lease." style="display:grid; grid-template-columns:0.9fr 1.1fr; gap:20px; padding:14px 20px; border-top:1px solid var(--line2); align-items:baseline;"><code style="font-family:'JetBrains Mono',monospace; font-size:15.5px; color:var(--text); white-space:pre-wrap;">git queue sync [--no-push]</code><span style="font-size:16px; color:var(--muted);">Pull remote, drop merged-PR branches (reparenting children), requeue onto the base, push with --force-with-lease.</span><div style="grid-column:1 / -1; margin-top:12px; overflow-x:auto;"><svg viewBox="0 0 326 254" role="img" style="max-width:373px; width:100%; height:auto; display:block;"><defs><marker id="qarr6" viewBox="0 0 8 8" refX="7" refY="4" markerWidth="7" markerHeight="7" orient="auto"><path d="M0,0 L8,4 L0,8 z" fill="var(--faint)"/></marker></defs><text x="14" y="22" font-family="'IBM Plex Sans',sans-serif" font-size="10.5" font-style="italic" fill="var(--faint)">before — trunk advanced to M2 under the queue</text><circle cx="90" cy="72" r="11" fill="var(--surface)" stroke="var(--faint)" stroke-width="1.6"/><text x="90" y="75.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="10" fill="var(--text)">M1</text><line x1="90" y1="84" x2="90" y2="92" stroke="var(--line)" stroke-width="1"/><rect x="56.0" y="92" width="68" height="18" rx="5" fill="var(--inset)" stroke="var(--line)"/><text x="90" y="104.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="9.5" fill="var(--muted)">main@{1}</text><line x1="164" y1="72" x2="109" y2="72" stroke="var(--faint)" stroke-width="1.4" marker-end="url(#qarr6)"/><circle cx="178" cy="72" r="11" fill="var(--surface)" stroke="var(--dim)" stroke-width="1.6"/><text x="178" y="75.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="10" fill="var(--text)">A</text><line x1="178" y1="84" x2="178" y2="92" stroke="var(--line)" stroke-width="1"/><rect x="161.5" y="92" width="33" height="18" rx="5" fill="var(--inset)" stroke="var(--line)"/><text x="178" y="104.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="9.5" fill="var(--muted)">api</text><line x1="252" y1="72" x2="197" y2="72" stroke="var(--faint)" stroke-width="1.4" marker-end="url(#qarr6)"/><circle cx="266" cy="72" r="11" fill="var(--surface)" stroke="var(--dim)" stroke-width="1.6"/><text x="266" y="75.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="10" fill="var(--text)">B</text><line x1="266" y1="84" x2="266" y2="92" stroke="var(--line)" stroke-width="1"/><rect x="251.0" y="92" width="30" height="18" rx="5" fill="var(--inset)" stroke="var(--line)"/><text x="266" y="104.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="9.5" fill="var(--muted)">ui</text><text x="14" y="154" font-family="'IBM Plex Sans',sans-serif" font-size="10.5" font-style="italic" fill="var(--faint)">after — whole queue requeued onto the new trunk tip</text><circle cx="90" cy="204" r="11" fill="var(--surface)" stroke="var(--faint)" stroke-width="1.6"/><text x="90" y="207.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="10" fill="var(--text)">M2</text><line x1="90" y1="216" x2="90" y2="224" stroke="var(--line)" stroke-width="1"/><rect x="70.0" y="224" width="40" height="18" rx="5" fill="var(--inset)" stroke="var(--line)"/><text x="90" y="236.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="9.5" fill="var(--muted)">main</text><line x1="164" y1="204" x2="109" y2="204" stroke="var(--faint)" stroke-width="1.4" marker-end="url(#qarr6)"/><circle cx="178" cy="204" r="11" fill="var(--surface)" stroke="var(--green)" stroke-width="1.6" stroke-dasharray="3 2"/><text x="178" y="207.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="10" fill="var(--text)">A′</text><line x1="178" y1="216" x2="178" y2="224" stroke="var(--line)" stroke-width="1"/><rect x="161.5" y="224" width="33" height="18" rx="5" fill="var(--inset)" stroke="var(--line)"/><text x="178" y="236.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="9.5" fill="var(--muted)">api</text><line x1="252" y1="204" x2="197" y2="204" stroke="var(--faint)" stroke-width="1.4" marker-end="url(#qarr6)"/><circle cx="266" cy="204" r="11" fill="var(--surface)" stroke="var(--green)" stroke-width="1.6" stroke-dasharray="3 2"/><text x="266" y="207.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="10" fill="var(--text)">B′</text><line x1="266" y1="216" x2="266" y2="224" stroke="var(--line)" stroke-width="1"/><rect x="251.0" y="224" width="30" height="18" rx="5" fill="var(--inset)" stroke="var(--line)"/><text x="266" y="236.5" text-anchor="middle" font-family="'JetBrains Mono',monospace" font-size="9.5" fill="var(--muted)">ui</text></svg></div><details style="grid-column:1 / -1; margin-top:8px;"><summary style="cursor:pointer; color:var(--green); font-family:'JetBrains Mono',monospace; font-size:13.5px;">learn more</summary><p style="margin:8px 0 2px; font-size:15.5px; line-height:1.6; color:var(--muted);">The converge-with-reality command. Fetches with <code style="color:var(--dim);">--prune</code>, fast-forwards each queue's base branch, stamps Stable-Commit-Ids onto any queue commits missing them, drops branches whose work has landed (merged PRs, and squash-merges detected by Stable-Commit-Id), pulls genuinely new teammate commits (id correspondence guarantees your own rewrites are never re-applied over themselves), requeues the whole forest onto its bases, pushes everything back with <code style="color:var(--dim);">--force-with-lease</code>, and reconciles the PRs of every published queue — opening missing ones, reviving closed ones, refreshing bases, titles and queue maps. <code style="color:var(--dim);">--no-push</code> stops after the local requeue. It never pushes a branch that would make GitHub mislabel an open child PR as merged.</p></details></div><div data-two-col="1" data-cmd-row data-search="git queue submit [--draft] (push) push the current queue line and open/update its numbered prs (revives a child pr github closed when its base was deleted)." style="display:grid; grid-template-columns:0.9fr 1.1fr; gap:20px; padding:14px 20px; border-top:1px solid var(--line2); align-items:baseline;"><code style="font-family:'JetBrains Mono',monospace; font-size:15.5px; color:var(--text); white-space:pre-wrap;">git queue submit [--draft] (push)</code><span style="font-size:16px; color:var(--muted);">Push the current queue line and open/update its numbered PRs (revives a child PR GitHub closed when its base was deleted).</span><details style="grid-column:1 / -1; margin-top:8px;"><summary style="cursor:pointer; color:var(--green); font-family:'JetBrains Mono',monospace; font-size:13.5px;">learn more</summary><p style="margin:8px 0 2px; font-size:15.5px; line-height:1.6; color:var(--muted);">Publishes the current line: pushes every branch (front first, so bases exist), opens or revives its numbered PRs, and rewrites each PR's base, <code style="color:var(--dim);">[k/n]</code> title and body (queue map + About sections). Adopted PRs keep their hand-written titles (renumbered) and bodies. With the status gate enabled it also posts the red/green merge-order statuses. <code style="color:var(--dim);">--draft</code> opens new PRs as drafts.</p></details></div><div data-two-col="1" data-cmd-row data-search="git queue yank close every open (non-merged) pr in the current queue." style="display:grid; grid-template-columns:0.9fr 1.1fr; gap:20px; padding:14px 20px; border-top:1px solid var(--line2); align-items:baseline;"><code style="font-family:'JetBrains Mono',monospace; font-size:15.5px; color:var(--text); white-space:pre-wrap;">git queue yank</code><span style="font-size:16px; color:var(--muted);">Close every open (non-merged) PR in the current queue.</span><details style="grid-column:1 / -1; margin-top:8px;"><summary style="cursor:pointer; color:var(--green); font-family:'JetBrains Mono',monospace; font-size:13.5px;">learn more</summary><p style="margin:8px 0 2px; font-size:15.5px; line-height:1.6; color:var(--muted);">Closes every open PR of the current queue without merging — for abandoning or restarting a published queue. Merged PRs, local branches and metadata are all left untouched.</p></details></div></div></div><div data-cmd-group style="margin-bottom:26px;"><div style="font-family:'JetBrains Mono',monospace; font-size:12px; font-weight:700; letter-spacing:0.14em; text-transform:uppercase; color:var(--green); margin-bottom:10px;">Merge-order</div><div class="gs-scroll" style="border:1px solid var(--line); border-radius:12px; overflow:hidden; background:var(--surface);"><div data-two-col="1" data-cmd-row data-search="git queue setup interactive per-step setup: hooks, merge-order gate, claude skill, agents.md" style="display:grid; grid-template-columns:0.9fr 1.1fr; gap:20px; padding:14px 20px; border-top:1px solid var(--line2); align-items:baseline;"><code style="font-family:'JetBrains Mono',monospace; font-size:15.5px; color:var(--text); white-space:pre-wrap;">git queue setup [--yes] [--undo]</code><span style="font-size:16px; color:var(--muted);">Interactive, per-step setup: the git hooks, the merge-order gate, the Claude Code skill, and an AGENTS.md section when other agents are detected. --undo reverses everything.</span><details style="grid-column:1 / -1; margin-top:8px;"><summary style="cursor:pointer; color:var(--green); font-family:'JetBrains Mono',monospace; font-size:13.5px;">learn more</summary><p style="margin:8px 0 2px; font-size:15.5px; line-height:1.6; color:var(--muted);">Walks through git-queue's optional integrations, asking permission for each: hooks (auto-requeue after plain commits + Stable-Commit-Id stamping), the advisory merge-order gate, the Claude Code skill (when <code style="color:var(--dim);">~/.claude</code> exists), and a marker-delimited git-queue section in this repo's <code style="color:var(--dim);">AGENTS.md</code> when other agent CLIs (Codex, Cursor, Gemini, Windsurf, Copilot) are detected — AGENTS.md being the cross-agent convention they all read. <code style="color:var(--dim);">--yes</code> accepts the two repo-local steps for scripts; <code style="color:var(--dim);">--undo</code> removes hooks, gate, skill and the AGENTS.md section.</p></details></div><div data-two-col="1" data-cmd-row data-search="git queue doctor report whether merge-order signalling is enabled (read-only)." style="display:grid; grid-template-columns:0.9fr 1.1fr; gap:20px; padding:14px 20px; border-top:1px solid var(--line2); align-items:baseline;"><code style="font-family:'JetBrains Mono',monospace; font-size:15.5px; color:var(--text); white-space:pre-wrap;">git queue doctor</code><span style="font-size:16px; color:var(--muted);">Report whether merge-order signalling is enabled (read-only).</span><details style="grid-column:1 / -1; margin-top:8px;"><summary style="cursor:pointer; color:var(--green); font-family:'JetBrains Mono',monospace; font-size:13.5px;">learn more</summary><p style="margin:8px 0 2px; font-size:15.5px; line-height:1.6; color:var(--muted);">Read-only diagnosis of merge-order signalling: whether the status gate is enabled, and whether the GitHub CLI is ready. Changes nothing.</p></details></div></div></div>
<p style="margin:6px 0 0; font-size:13px; color:var(--faint); font-family:'JetBrains Mono',monospace;">// Help quirk: <code style="color:var(--dim);">git queue <cmd> --help</code> is intercepted by Git and opens the man page — use <code style="color:var(--dim);">git queue help</code> for inline CLI help.</p>
</section>
<!-- ===================== EXAMPLES ===================== -->
<section id="examples" style="scroll-margin-top:80px; max-width:1160px; margin:0 auto; padding:72px 32px 24px;">
<div style="display:flex; align-items:baseline; gap:16px; margin-bottom:8px;">
<span style="font-family:'JetBrains Mono',monospace; font-size:13px; font-weight:700; color:var(--green);">04</span>
<h2 style="margin:0; font-family:'JetBrains Mono',monospace; font-size:30px; font-weight:800; color:var(--head); letter-spacing:-0.01em;">Realistic examples</h2>
</div>
<p style="margin:0 0 22px; font-size:16px; color:var(--muted); max-width:52em;">Three worked, end-to-end sessions — each paired with the PR-body queue map git-queue generates.</p>
<div style="display:flex; gap:8px; margin-bottom:22px; flex-wrap:wrap;">
<button id="tab-A" data-tab="A" style="">A · Build & ship a 3-PR queue</button>
<button id="tab-B" data-tab="B" style="">B · Address review feedback</button>
<button id="tab-C" data-tab="C" style="">C · Split a big branch</button>
</div>
<div style="margin-bottom:18px;"><p id="ex-blurb" style="margin:0; font-size:15px; color:var(--muted);">Build a three-branch queue from trunk, describe the front PR, and open all three cross-linked PRs in one submit.</p></div>
<div data-two-col="1" style="display:grid; grid-template-columns:1.05fr 0.95fr; gap:24px; align-items:start;">
<div style="background:var(--surface); border:1px solid var(--line); border-radius:12px; overflow:hidden;">
<div style="padding:11px 16px; border-bottom:1px solid var(--line2); font-family:'JetBrains Mono',monospace; font-size:11.5px; color:var(--faint); text-transform:uppercase; letter-spacing:0.1em;">session</div>
<pre class="gs-scroll" style="margin:0; padding:20px 22px; overflow-x:auto; font-family:'JetBrains Mono',monospace; font-size:13px; line-height:1.95; color:var(--text);" id="ex-session">$ git checkout main
$ git queue create types # front of the queue
# …edit, then:
$ git queue commit -m "Add domain types"
$ git queue describe -m "Introduces the core domain types shared by the queue."
$ git queue create service
$ git queue commit -m "Add service layer"
$ git queue create api
$ git queue commit -m "Expose HTTP API"
$ git queue status # see the three-branch queue
$ git queue submit # opens PRs #1/3, #2/3, #3/3, cross-linked</pre>
</div>
<div style="background:var(--inset); border:1px solid var(--line); border-radius:12px; overflow:hidden;">
<div style="padding:11px 16px; border-bottom:1px solid var(--line2); font-family:'JetBrains Mono',monospace; font-size:11.5px; color:var(--faint); text-transform:uppercase; letter-spacing:0.1em;">generated PR-body queue map</div>
<div style="padding:22px 24px; font-size:14px;" id="ex-map"><div style="border:1px solid #30363d; border-radius:6px; overflow:hidden; background:#0d1117; color:#e6edf3; font-family:-apple-system,BlinkMacSystemFont,'Segoe UI','Noto Sans',Helvetica,Arial,sans-serif; font-size:14px; line-height:1.5; text-align:left;"><div style="display:flex; align-items:center; gap:8px; background:#161b22; border-bottom:1px solid #30363d; padding:9px 16px; font-size:13px; color:#8b949e;"><span style="width:20px; height:20px; border-radius:50%; background:linear-gradient(135deg,#57d98a,#1f6feb); flex:none;"></span><span><strong style="color:#e6edf3;">freshtonic</strong> commented just now</span><span style="margin-left:auto; border:1px solid #30363d; border-radius:2em; padding:1px 8px; font-size:11px;">Author</span></div><div style="padding:16px;"><h3 style="margin:0 0 16px; font-size:1.25em; font-weight:600; color:#e6edf3;">📚 Queued PR · 2 of 3</h3><p style="margin:0 0 16px;">Part of a queue. The PRs merge in FIFO order — the numbered order below, #1 first.</p><div style="margin:0 0 16px;"><div style="margin:4px 0;">🟣 <a style="color:#58a6ff; text-decoration:none;">#10 <code style="background:rgba(110,118,129,0.4); padding:0.15em 0.4em; border-radius:6px; font-family:ui-monospace,'JetBrains Mono',SFMono-Regular,monospace; font-size:85%;">api</code></a> → <code style="background:rgba(110,118,129,0.4); padding:0.15em 0.4em; border-radius:6px; font-family:ui-monospace,'JetBrains Mono',SFMono-Regular,monospace; font-size:85%;">main</code></div><div style="margin:4px 0;">♻️🟢 <strong><a style="color:#58a6ff; text-decoration:none;">#11 <code style="background:rgba(110,118,129,0.4); padding:0.15em 0.4em; border-radius:6px; font-family:ui-monospace,'JetBrains Mono',SFMono-Regular,monospace; font-size:85%;">service</code></a> → <code style="background:rgba(110,118,129,0.4); padding:0.15em 0.4em; border-radius:6px; font-family:ui-monospace,'JetBrains Mono',SFMono-Regular,monospace; font-size:85%;">api</code></strong> 👈 <strong>this PR</strong></div><div style="margin:4px 0;">⏳🟢 <a style="color:#58a6ff; text-decoration:none;">#12 <code style="background:rgba(110,118,129,0.4); padding:0.15em 0.4em; border-radius:6px; font-family:ui-monospace,'JetBrains Mono',SFMono-Regular,monospace; font-size:85%;">ui</code></a> → <code style="background:rgba(110,118,129,0.4); padding:0.15em 0.4em; border-radius:6px; font-family:ui-monospace,'JetBrains Mono',SFMono-Regular,monospace; font-size:85%;">service</code></div></div><p style="margin:0 0 4px; font-size:11.5px; color:#8b949e;">✅ approved · ♻️ changes requested · ⏳ review pending | 🟣 merged · 🟢 open · ⚫ closed — status as of the last <code style="background:rgba(110,118,129,0.4); padding:0.15em 0.4em; border-radius:6px; font-family:ui-monospace,'JetBrains Mono',SFMono-Regular,monospace; font-size:85%;">git queue submit</code>.</p><p style="margin:0 0 4px; font-size:11.5px; color:#8b949e;">🥞 Managed by git-queue — do not edit this list by hand.</p><h2 style="margin:16px 0 8px; font-size:1.3em; border-bottom:1px solid #30363d; padding-bottom:6px; color:#e6edf3;">About this queue</h2><p style="margin:0 0 12px; color:#8b949e; font-style:italic;"><your <code style="background:rgba(110,118,129,0.4); padding:0.15em 0.4em; border-radius:6px; font-size:85%;">git queue describe-branch</code> text></p><h2 style="margin:16px 0 8px; font-size:1.3em; border-bottom:1px solid #30363d; padding-bottom:6px; color:#e6edf3;">About this branch</h2><p style="margin:0; color:#8b949e; font-style:italic;"><your <code style="background:rgba(110,118,129,0.4); padding:0.15em 0.4em; border-radius:6px; font-family:ui-monospace,'JetBrains Mono',SFMono-Regular,monospace; font-size:85%;">git queue describe</code> text></p></div></div></div>
</div>
</div>
</section>
<!-- ===================== FAQ ===================== -->
<section id="howto" style="scroll-margin-top:80px; max-width:1160px; margin:0 auto; padding:26px 32px 30px;"><div style="display:flex; align-items:baseline; gap:14px; margin-bottom:8px;"><span style="font-family:'JetBrains Mono',monospace; font-size:13px; font-weight:700; color:var(--green);">05</span><h2 style="margin:0; font-family:'JetBrains Mono',monospace; font-size:30px; font-weight:800; color:var(--head); letter-spacing:-0.01em;">How do I …?</h2></div><p style="margin:0 0 20px; font-size:16px; color:var(--muted); max-width:52em;">Task-focused recipes — the honest versions, including where a workflow takes more than one command.</p><div style="border:1px solid var(--line); border-radius:12px; overflow:hidden; background:var(--surface);"><div style="border-top:1px solid var(--line2);"><button data-howto="0" style="width:100%; cursor:pointer; display:flex; align-items:center; justify-content:space-between; gap:16px; padding:18px 22px; border:none; background:transparent; text-align:left; font-family:'JetBrains Mono',monospace; font-size:15px; font-weight:600; color:var(--head);"><span>How do I turn an existing branch into a queue?</span><span data-howto-sign="0" style="color:var(--green); font-size:16px; flex-shrink:0;">−</span></button><div data-howto-answer="0" style="padding:0 22px 20px; font-size:15px; line-height:1.68; color:var(--muted);">Check it out and run <code>git queue track</code>. It records the parent (trunk by default, or <code>--parent <branch></code>), asks you to name the queue, and offers to stamp <code>Stable-Commit-Id</code>s onto the existing commits — that rewrites their hashes, so it asks first. Then <code>git queue submit</code> opens the PR; a PR that already existed is adopted, keeping its hand-written title and body.</div></div><div style="border-top:1px solid var(--line2);"><button data-howto="1" style="width:100%; cursor:pointer; display:flex; align-items:center; justify-content:space-between; gap:16px; padding:18px 22px; border:none; background:transparent; text-align:left; font-family:'JetBrains Mono',monospace; font-size:15px; font-weight:600; color:var(--head);"><span>How do I turn an existing branch into a queue with more than one branch?</span><span data-howto-sign="1" style="color:var(--green); font-size:16px; flex-shrink:0;">+</span></button><div data-howto-answer="1" style="padding:0 22px 20px; font-size:15px; line-height:1.68; color:var(--muted); display:none;"><code>git queue track --edit</code>. After adoption it opens the queue editor: every branch is a <code>[name]</code> section header over its commits — move, rename, or add headers, and each section become one branch/PR, created as <code>queue/<name>/<segment></code>. No commits are rewritten (branch refs are placed at the existing boundaries), and if no segment reuses the original branch's name, git-queue offers to delete the now-redundant old ref.</div></div><div style="border-top:1px solid var(--line2);"><button data-howto="2" style="width:100%; cursor:pointer; display:flex; align-items:center; justify-content:space-between; gap:16px; padding:18px 22px; border:none; background:transparent; text-align:left; font-family:'JetBrains Mono',monospace; font-size:15px; font-weight:600; color:var(--head);"><span>How do I convert a queue back to a regular git branch?</span><span data-howto-sign="2" style="color:var(--green); font-size:16px; flex-shrink:0;">+</span></button><div data-howto-answer="2" style="padding:0 22px 20px; font-size:15px; line-height:1.68; color:var(--muted); display:none;">There's no single command (yet), but it's short: the queue's top branch already contains the entire history, so nothing needs merging. If PRs are open, <code>git queue yank</code> closes them. Then check out each branch and run <code>git queue untrack</code> to drop its metadata, delete the intermediate branches (<code>git branch -D …</code>), and keep — or <code>git branch -m</code> rename — the top branch. Your commits keep their <code>Stable-Commit-Id</code> trailers, which is harmless.</div></div><div style="border-top:1px solid var(--line2);"><button data-howto="3" style="width:100%; cursor:pointer; display:flex; align-items:center; justify-content:space-between; gap:16px; padding:18px 22px; border:none; background:transparent; text-align:left; font-family:'JetBrains Mono',monospace; font-size:15px; font-weight:600; color:var(--head);"><span>How can I collaborate with someone on the same queue?</span><span data-howto-sign="3" style="color:var(--green); font-size:16px; flex-shrink:0;">+</span></button><div data-howto-answer="3" style="padding:0 22px 20px; font-size:15px; line-height:1.68; color:var(--muted); display:none;">The branches and PRs are shared through the remote as usual, but queue <em>structure</em> lives in each clone's local git config — so your collaborator rebuilds it once: check out each branch, front to back, and <code>git queue track --parent <its parent></code> (branches named <code>queue/<name>/…</code> resolve their queue name automatically). From then on you both just <code>git queue sync</code>: pushes are <code>--force-with-lease</code> so nobody clobbers unseen work, and <code>Stable-Commit-Id</code> correspondence means teammate commits are pulled exactly once while your own rewrites are never re-applied over their stale remote copies. If you both rewrite at the same moment, the second pusher's lease fails — they re-run <code>sync</code> and it settles.</div></div><div style="border-top:1px solid var(--line2);"><button data-howto="4" style="width:100%; cursor:pointer; display:flex; align-items:center; justify-content:space-between; gap:16px; padding:18px 22px; border:none; background:transparent; text-align:left; font-family:'JetBrains Mono',monospace; font-size:15px; font-weight:600; color:var(--head);"><span>Conflict markers are preserved after reparenting — does that mean manipulating commits always succeeds, like with jj?</span><span data-howto-sign="4" style="color:var(--green); font-size:16px; flex-shrink:0;">+</span></button><div data-howto-answer="4" style="padding:0 22px 20px; font-size:15px; line-height:1.68; color:var(--muted); display:none;">Half of it does, and the comparison is instructive. The replay family — <code>commit</code>, <code>sync</code>, <code>requeue</code>, <code>move</code> — always <em>completes</em>: on conflict, the markers are committed into the affected files and the branches are loudly flagged (<code>⚠ conflict markers</code> in <code>status</code>); you resolve and <code>git queue amend</code>. The history family — <code>amend</code>, <code>reword</code> — is atomic instead: on conflict it aborts and changes nothing, because its engine cannot represent a conflicted state. And unlike jj, the markers are plain text in real commits, not first-class conflict objects — git-queue tracks <em>where</em> they are, but resolving one doesn't auto-propagate the resolution anywhere else.</div></div><div style="border-top:1px solid var(--line2);"><button data-howto="5" style="width:100%; cursor:pointer; display:flex; align-items:center; justify-content:space-between; gap:16px; padding:18px 22px; border:none; background:transparent; text-align:left; font-family:'JetBrains Mono',monospace; font-size:15px; font-weight:600; color:var(--head);"><span>How do I address review feedback on a PR in the middle of the queue?</span><span data-howto-sign="5" style="color:var(--green); font-size:16px; flex-shrink:0;">+</span></button><div data-howto-answer="5" style="padding:0 22px 20px; font-size:15px; line-height:1.68; color:var(--muted); display:none;">Go to that branch (<code>git queue prev</code>/<code>next</code>, or check it out directly), stage your fix, and run <code>git queue amend</code> — it folds the staged changes into the branch's tip commit and updates every branch behind it, atomically. The commit's message and <code>Stable-Commit-Id</code> are preserved. For a commit that isn't a branch tip, <code>git queue checkout <id></code> then <code>git commit --amend</code> edits it in place. Finish with <code>git queue submit</code> to refresh the PRs.</div></div><div style="border-top:1px solid var(--line2);"><button data-howto="6" style="width:100%; cursor:pointer; display:flex; align-items:center; justify-content:space-between; gap:16px; padding:18px 22px; border:none; background:transparent; text-align:left; font-family:'JetBrains Mono',monospace; font-size:15px; font-weight:600; color:var(--head);"><span>How do I reorder commits, or move one to a different PR?</span><span data-howto-sign="6" style="color:var(--green); font-size:16px; flex-shrink:0;">+</span></button><div data-howto-answer="6" style="padding:0 22px 20px; font-size:15px; line-height:1.68; color:var(--muted); display:none;"><code>git queue log</code> shows every commit with its abbreviated <code>Stable-Commit-Id</code>; use those with <code>git queue move <id> --new-parent <id></code> (or an inclusive range, <code><first>..<last></code>). The moved commits join the branch segment their new parent belongs to — so moving onto a branch's tip commit moves work into that PR — and everything downstream rebases in one pass.</div></div><div style="border-top:1px solid var(--line2);"><button data-howto="7" style="width:100%; cursor:pointer; display:flex; align-items:center; justify-content:space-between; gap:16px; padding:18px 22px; border:none; background:transparent; text-align:left; font-family:'JetBrains Mono',monospace; font-size:15px; font-weight:600; color:var(--head);"><span>How do I land a queue?</span><span data-howto-sign="7" style="color:var(--green); font-size:16px; flex-shrink:0;">+</span></button><div data-howto-answer="7" style="padding:0 22px 20px; font-size:15px; line-height:1.68; color:var(--muted); display:none;">Merge the front PR on GitHub — with <code>git queue setup</code> on, it's the one with the green <code>merge-order</code> ✓ — then run <code>git queue sync</code>: it detects the merge (even a squash-merge, via <code>Stable-Commit-Id</code>s), drops the landed branch, retargets the next PR onto trunk and promotes it to green. Repeat until the queue is empty. Branch auto-deletion on merge is handled, including the PR-closing side effects.</div></div><div style="border-top:1px solid var(--line2);"><button data-howto="8" style="width:100%; cursor:pointer; display:flex; align-items:center; justify-content:space-between; gap:16px; padding:18px 22px; border:none; background:transparent; text-align:left; font-family:'JetBrains Mono',monospace; font-size:15px; font-weight:600; color:var(--head);"><span>How do I build a queue on a release branch instead of trunk?</span><span data-howto-sign="8" style="color:var(--green); font-size:16px; flex-shrink:0;">+</span></button><div data-howto-answer="8" style="padding:0 22px 20px; font-size:15px; line-height:1.68; color:var(--muted); display:none;">Start it there: <code>git checkout release-1.2 && git queue create fix-a</code>, or from anywhere with <code>git queue create fix-a --base release-1.2</code>. That branch becomes the queue's base — the front PR targets it, and <code>sync</code> keeps the queue rebased on it as it moves. Trunk stays uninvolved.</div></div><div style="border-top:1px solid var(--line2);"><button data-howto="9" style="width:100%; cursor:pointer; display:flex; align-items:center; justify-content:space-between; gap:16px; padding:18px 22px; border:none; background:transparent; text-align:left; font-family:'JetBrains Mono',monospace; font-size:15px; font-weight:600; color:var(--head);"><span>How do I stop PRs being merged out of order?</span><span data-howto-sign="9" style="color:var(--green); font-size:16px; flex-shrink:0;">+</span></button><div data-howto-answer="9" style="padding:0 22px 20px; font-size:15px; line-height:1.68; color:var(--muted); display:none;"><code>git queue setup</code>, once per repo. Every open PR then carries a <code>git-queue/merge-order</code> commit status: green ✓ on the front PR, red ✗ ("merge PR #N first", linking to the blocker) on the ones behind it. It's advisory by design — the hard blocks GitHub offers live on base-branch rules, which would also reject git-queue's own pushes — but it makes merging out of order a deliberate act instead of an accident.</div></div><div style="border-top:1px solid var(--line2);"><button data-howto="10" style="width:100%; cursor:pointer; display:flex; align-items:center; justify-content:space-between; gap:16px; padding:18px 22px; border:none; background:transparent; text-align:left; font-family:'JetBrains Mono',monospace; font-size:15px; font-weight:600; color:var(--head);"><span>I merged a PR out of order by mistake — now what?</span><span data-howto-sign="10" style="color:var(--green); font-size:16px; flex-shrink:0;">+</span></button><div data-howto-answer="10" style="padding:0 22px 20px; font-size:15px; line-height:1.68; color:var(--muted); display:none;">Nothing is lost: the commits are in whatever branch you merged into, and GitHub will have marked any PR whose commits became reachable from its base as merged. Run <code>git queue sync</code> — it prunes branches whose work has landed, reparents the survivors, revives any PR GitHub closed, and retargets what remains. git-queue also refuses pushes that would cause the mislabel in the first place (a branch whose tip contains an open child PR's head).</div></div></div></section><section id="faq" style="scroll-margin-top:80px; max-width:900px; margin:0 auto; padding:72px 32px 24px;">
<div style="display:flex; align-items:baseline; gap:16px; margin-bottom:24px;">
<span style="font-family:'JetBrains Mono',monospace; font-size:13px; font-weight:700; color:var(--green);">06</span>
<h2 style="margin:0; font-family:'JetBrains Mono',monospace; font-size:30px; font-weight:800; color:var(--head); letter-spacing:-0.01em;">FAQ</h2>
</div>
<div style="border:1px solid var(--line); border-radius:12px; overflow:hidden; background:var(--surface);">
<div style="border-top:1px solid var(--line2);"><button data-faq="0" style="width:100%; cursor:pointer; display:flex; align-items:center; justify-content:space-between; gap:16px; padding:18px 22px; border:none; background:transparent; text-align:left; font-family:'JetBrains Mono',monospace; font-size:15px; font-weight:600; color:var(--head);"><span>In what order do the PRs merge?</span><span data-faq-sign="0" style="color:var(--green); font-size:16px; flex-shrink:0;">−</span></button><div data-faq-answer="0" style="padding:0 22px 20px; font-size:15px; line-height:1.68; color:var(--muted);">FIFO — the oldest PR (<code>#1</code>, front of the queue) merges first, then the next. After a PR lands, run <code>git queue sync</code> (detects the merge, reparents branches above onto trunk, rebases them), then <code>git queue submit</code> (retargets PR bases, refreshes the list).</div></div><div style="border-top:1px solid var(--line2);"><button data-faq="1" style="width:100%; cursor:pointer; display:flex; align-items:center; justify-content:space-between; gap:16px; padding:18px 22px; border:none; background:transparent; text-align:left; font-family:'JetBrains Mono',monospace; font-size:15px; font-weight:600; color:var(--head);"><span>Why is it called git-queue and not git-stack?</span><span data-faq-sign="1" style="color:var(--green); font-size:16px; flex-shrink:0;">+</span></button><div data-faq-answer="1" style="padding:0 22px 20px; font-size:15px; line-height:1.68; color:var(--muted); display:none;">Partly because <code>git-stack</code> was taken. But mostly because the standard nomenclature is wrong: “stacked” PRs don’t pop last-in-first-out — they merge <em>first-in-first-out</em>, front of the line first. That’s a queue, so this tool calls it one. If you already think in stacked PRs, mentally replace “queue” with “stack” and everything maps one-to-one.</div></div><div style="border-top:1px solid var(--line2);"><button data-faq="2" style="width:100%; cursor:pointer; display:flex; align-items:center; justify-content:space-between; gap:16px; padding:18px 22px; border:none; background:transparent; text-align:left; font-family:'JetBrains Mono',monospace; font-size:15px; font-weight:600; color:var(--head);"><span>Can git-queue stop people merging out of order?</span><span data-faq-sign="2" style="color:var(--green); font-size:16px; flex-shrink:0;">+</span></button><div data-faq-answer="2" style="padding:0 22px 20px; font-size:15px; line-height:1.68; color:var(--muted); display:none;">Yes — <code>git queue setup</code> (once per repo) enables a <code>git-queue/merge-order</code> commit status on every open PR: green <span style="color:var(--green)">✓</span> on the bottom mergeable PR, red <span style="color:var(--red)">✗</span> (“merge PR #N first”) on every PR above it, linking to the PR that must land first. It's <em>advisory</em> — the red ✗ shows in the checks list but doesn't disable the merge button; PRs stay normal, reviewable, non-draft. <code>git queue doctor</code> reports whether it's on.</div></div><div style="border-top:1px solid var(--line2);"><button data-faq="3" style="width:100%; cursor:pointer; display:flex; align-items:center; justify-content:space-between; gap:16px; padding:18px 22px; border:none; background:transparent; text-align:left; font-family:'JetBrains Mono',monospace; font-size:15px; font-weight:600; color:var(--head);"><span>Why a commit status instead of actually blocking the merge?</span><span data-faq-sign="3" style="color:var(--green); font-size:16px; flex-shrink:0;">+</span></button><div data-faq-answer="3" style="padding:0 22px 20px; font-size:15px; line-height:1.68; color:var(--muted); display:none;">Every hard block GitHub offers lives on the <em>base</em> branch's rules. With base-chaining, a PR behind the front targets an intermediate queue branch — so a ruleset that gates the merge also rejects git-queue's own pushes to that branch. Draft PRs (the one PR-level block) read socially as “not ready for review.” A commit status is the strongest signal that keeps PRs normal and pushes unblocked.</div></div><div style="border-top:1px solid var(--line2);"><button data-faq="4" style="width:100%; cursor:pointer; display:flex; align-items:center; justify-content:space-between; gap:16px; padding:18px 22px; border:none; background:transparent; text-align:left; font-family:'JetBrains Mono',monospace; font-size:15px; font-weight:600; color:var(--head);"><span>What happens when a commit in the middle of the queue conflicts?</span><span data-faq-sign="4" style="color:var(--green); font-size:16px; flex-shrink:0;">+</span></button><div data-faq-answer="4" style="padding:0 22px 20px; font-size:15px; line-height:1.68; color:var(--muted); display:none;">Depends on the operation. <code>commit</code>/<code>requeue</code>/<code>sync</code> (engine <code>git replay</code>) always finish — on conflict they <strong style="color:var(--text)">persist the conflict markers into the committed files</strong> and flag the affected branches (shown as <code>⚠ conflict markers</code> in <code>git queue status</code>). <code>amend</code>/<code>reword</code> (engine <code>git history</code>) are <strong style="color:var(--text)">atomic</strong> — on conflict they abort and change nothing. When you see markers: go to each flagged branch, search for <code><<<<<<<</code>, resolve, and <code>git queue amend</code>. Never <code>submit</code> a branch that still has markers.</div></div><div style="border-top:1px solid var(--line2);"><button data-faq="5" style="width:100%; cursor:pointer; display:flex; align-items:center; justify-content:space-between; gap:16px; padding:18px 22px; border:none; background:transparent; text-align:left; font-family:'JetBrains Mono',monospace; font-size:15px; font-weight:600; color:var(--head);"><span>What if the merged branch gets deleted?</span><span data-faq-sign="5" style="color:var(--green); font-size:16px; flex-shrink:0;">+</span></button><div data-faq-answer="5" style="padding:0 22px 20px; font-size:15px; line-height:1.68; color:var(--muted); display:none;">Handled. If a merge deletes the branch (<code>--delete-branch</code> or repo auto-delete), <code>sync</code> reparents orphaned children onto trunk, and because GitHub closes a PR whose base was deleted, <code>submit</code> revives that child PR — reopening it or opening a fresh one retargeted to trunk.</div></div><div style="border-top:1px solid var(--line2);"><button data-faq="6" style="width:100%; cursor:pointer; display:flex; align-items:center; justify-content:space-between; gap:16px; padding:18px 22px; border:none; background:transparent; text-align:left; font-family:'JetBrains Mono',monospace; font-size:15px; font-weight:600; color:var(--head);"><span>Is my work safe from clobbering teammates?</span><span data-faq-sign="6" style="color:var(--green); font-size:16px; flex-shrink:0;">+</span></button><div data-faq-answer="6" style="padding:0 22px 20px; font-size:15px; line-height:1.68; color:var(--muted); display:none;"><code>git queue sync</code> pushes with <code>--force-with-lease</code>, so it won't overwrite commits pushed after your last fetch. If a push is rejected, run <code>sync</code> again to pull their work in first. Use <code>git queue sync --no-push</code> to requeue locally without touching the remote. git-queue never edits trunk's commits.</div></div><div style="border-top:1px solid var(--line2);"><button data-faq="7" style="width:100%; cursor:pointer; display:flex; align-items:center; justify-content:space-between; gap:16px; padding:18px 22px; border:none; background:transparent; text-align:left; font-family:'JetBrains Mono',monospace; font-size:15px; font-weight:600; color:var(--head);"><span>Where does git-queue store its state?</span><span data-faq-sign="7" style="color:var(--green); font-size:16px; flex-shrink:0;">+</span></button><div data-faq-answer="7" style="padding:0 22px 20px; font-size:15px; line-height:1.68; color:var(--muted); display:none;">Entirely in the repo's own git config — nothing outside git. Keys: <code>queue.trunk</code>, <code>queue.remote</code>, <code>branch.<n>.queueParent</code>, <code>branch.<n>.queueParentSha</code>, <code>branch.<n>.queuePr</code>, <code>branch.<n>.queueDescription</code>, <code>queue.gate</code>. Inspect with <code>git config --get-regexp '^branch\..*\.queue'</code>. Conflict-marker state is <em>not</em> stored — <code>status</code> detects <code><<<<<<<</code> live, so it's never stale.</div></div><div style="border-top:1px solid var(--line2);"><button data-faq="8" style="width:100%; cursor:pointer; display:flex; align-items:center; justify-content:space-between; gap:16px; padding:18px 22px; border:none; background:transparent; text-align:left; font-family:'JetBrains Mono',monospace; font-size:15px; font-weight:600; color:var(--head);"><span>Do I have to use git queue commit instead of git commit?</span><span data-faq-sign="8" style="color:var(--green); font-size:16px; flex-shrink:0;">+</span></button><div data-faq-answer="8" style="padding:0 22px 20px; font-size:15px; line-height:1.68; color:var(--muted); display:none;">No — run <code>git queue setup</code> and a post-commit / post-rewrite hook calls <code>git queue requeue</code> for you after plain <code>git commit</code> / <code>git commit --amend</code>. The hooks are guarded against recursion and no-op off a queue.</div></div><div style="border-top:1px solid var(--line2);"><button data-faq="9" style="width:100%; cursor:pointer; display:flex; align-items:center; justify-content:space-between; gap:16px; padding:18px 22px; border:none; background:transparent; text-align:left; font-family:'JetBrains Mono',monospace; font-size:15px; font-weight:600; color:var(--head);"><span>Why does git queue --help open a man page?</span><span data-faq-sign="9" style="color:var(--green); font-size:16px; flex-shrink:0;">+</span></button><div data-faq-answer="9" style="padding:0 22px 20px; font-size:15px; line-height:1.68; color:var(--muted); display:none;">Git intercepts <code>--help</code> on subcommands and routes it to <code>man git-queue</code>. Run <code>git queue setup</code> so that page exists; otherwise use <code>git queue help</code> or <code>git-queue --help</code> for inline help.</div></div><div style="border-top:1px solid var(--line2);"><button data-faq="10" style="width:100%; cursor:pointer; display:flex; align-items:center; justify-content:space-between; gap:16px; padding:18px 22px; border:none; background:transparent; text-align:left; font-family:'JetBrains Mono',monospace; font-size:15px; font-weight:600; color:var(--head);"><span>What is the Stable-Commit-Id trailer in my commit messages?</span><span data-faq-sign="10" style="color:var(--green); font-size:16px; flex-shrink:0;">+</span></button><div data-faq-answer="10" style="padding:0 22px 20px; font-size:15px; line-height:1.68; color:var(--muted); display:none;">Stable change identity — the same idea as Gerrit's <code>Change-Id</code>. SHAs change on every amend, move and requeue; the message doesn't, so a <code>Stable-Commit-Id:</code> trailer identifies the <em>change</em> across rewrites. git-queue uses it to pull only genuinely new teammate commits during <code>sync</code> (your own rewrites can never conflict with their stale remote copies), and to detect squash-merged work whose SHAs are gone. <code>git queue commit</code> stamps it automatically; <code>git queue setup</code> covers plain <code>git commit</code>; <code>git queue status</code> Commands that take commits (<code>move</code>, <code>reword</code>) accept ids too — full or unique prefix, as <code>git queue log</code> displays them.</div></div>
</div>
</section>
<!-- ===================== FOOTER ===================== -->
<footer style="border-top:1px solid var(--line2); margin-top:48px;">
<div data-two-col="1" style="max-width:1160px; margin:0 auto; padding:44px 32px; display:grid; grid-template-columns:1.4fr 1fr 1fr; gap:32px;">
<div>
<div style="font-family:'JetBrains Mono',monospace; font-size:15.5px; font-weight:800; color:var(--head);">git‑queue<span style="color:var(--green);">(1)</span></div>
<p style="margin:10px 0 0; font-size:14px; color:var(--dim); max-width:32em;">Queues of dependent branches and their numbered pull requests. A single Rust binary — state lives entirely in your repo's git config.</p>
</div>
<div style="display:flex; flex-direction:column; gap:10px; font-family:'JetBrains Mono',monospace; font-size:13.5px;">
<span style="color:var(--faint); text-transform:uppercase; letter-spacing:0.1em; font-size:11.5px;">Project</span>
<a href="https://github.com/freshtonic/git-queue">GitHub repo ↗</a>
<a href="https://github.com/freshtonic/git-queue/blob/main/DESIGN.md">DESIGN.md ↗</a>
<a href="https://github.com/freshtonic/git-queue/blob/main/skills/using-git-queue/SKILL.md">Claude skill ↗</a>
</div>
<div style="display:flex; flex-direction:column; gap:10px; font-family:'JetBrains Mono',monospace; font-size:13.5px;">
<span style="color:var(--faint); text-transform:uppercase; letter-spacing:0.1em; font-size:11.5px;">On this page</span>
<a href="#install" style="color:var(--dim);">Install</a>
<a href="#start" style="color:var(--dim);">Getting started</a>
<a href="#reference" style="color:var(--dim);">Command reference</a>
<a href="#examples" style="color:var(--dim);">Examples</a>
</div>
</div>
<div style="border-top:1px solid var(--line2);">
<div style="max-width:1160px; margin:0 auto; padding:18px 32px; display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:10px; font-family:'JetBrains Mono',monospace; font-size:12.5px; color:var(--faint);">
<span>There's a Claude Code skill (<code style="color:var(--dim);">skills/using-git-queue/SKILL.md</code>) that teaches Claude to drive <code style="color:var(--dim);">git queue</code>.</span>
<span>MIT · <code>git-queue</code></span>
</div>
</div>
</footer>
</div>
<script>
(function () {
var gs = document.getElementById('gs');
// nav version tag — keep it current from the latest GitHub release
var verEl = document.getElementById('nav-version');
if (verEl) {
fetch('https://api.github.com/repos/freshtonic/git-queue/releases/latest')
.then(function (r) { return r.ok ? r.json() : null; })
.then(function (d) { if (d && d.tag_name) verEl.textContent = d.tag_name; })
.catch(function () {});
}
// theme
var themeBtn = document.getElementById('btn-theme');
themeBtn.addEventListener('click', function () {
var dark = gs.getAttribute('data-theme') === 'dark';
gs.setAttribute('data-theme', dark ? 'light' : 'dark');
themeBtn.textContent = dark ? '\u25d0' : '\u25d1';
});
// hero terminal
var heroLines = [{"k": "cmd", "t": "git queue create api"}, {"k": "cmd", "t": "git queue create service"}, {"k": "cmd", "t": "git queue create ui"}, {"k": "diag", "t": "\u25c9 ui (local) \u2190 current\n\u25ef service (local)\n\u25ef api (local)\n\u2534\n main (trunk)"}, {"k": "cmd", "t": "git queue submit"}, {"k": "note", "t": "\u2713 pushed 3 branches \u00b7 opened #10 #11 #12, cross-linked"}, {"k": "diag", "t": "\u25c9 ui #12 [OPEN] \u2190 current\n\u25ef service #11 [OPEN]\n\u25ef api #10 [OPEN]\n\u2534\n main (trunk)"}, {"k": "note", "t": "\u2713 #10 api merged into main"}, {"k": "cmd", "t": "git queue sync"}, {"k": "diag", "t": "\u25c9 ui #12 [OPEN] \u2190 current\n\u25ef service #11 [OPEN] \u2192 main\n\u2534\n main (trunk)"}];
function esc(t) { return t.replace(/&/g, '&').replace(/</g, '<'); }
function lineHtml(ln) {
if (ln.k === 'cmd') return '<div style="animation:bsRise .4s both"><span style="color:var(--green); margin-right:8px;">$</span><span style="color:var(--text);">' + esc(ln.t) + '</span></div>';
if (ln.k === 'note') return '<div style="color:var(--dim); animation:bsRise .4s both; margin:2px 0;">' + esc(ln.t) + '</div>';
return '<pre style="margin:8px 0; color:var(--dim); line-height:1.9; animation:bsRise .5s both; font-family:\'JetBrains Mono\',monospace;">' + esc(ln.t) + '</pre>';
}
var CURSOR = '<span style="display:inline-block; width:8px; height:16px; background:var(--green); vertical-align:middle; margin-top:6px; animation:bsBlink 1.1s steps(1) infinite;"></span>';
var term = document.getElementById('hero-term'), frame = 1, timer;
function renderTerm() { term.innerHTML = heroLines.slice(0, frame).map(lineHtml).join('') + CURSOR; }
function tick() {
if (frame >= heroLines.length) { timer = setTimeout(function () { frame = 1; renderTerm(); tick(); }, 3400); return; }
var cur = heroLines[frame - 1], delay = cur && cur.k === 'diag' ? 1400 : 900;
timer = setTimeout(function () { frame++; renderTerm(); tick(); }, delay);
}
renderTerm(); tick();
document.getElementById('btn-replay').addEventListener('click', function () { clearTimeout(timer); frame = 1; renderTerm(); tick(); });
// copy buttons
function copyBtn(id, text) {
var b = document.getElementById(id);
b.addEventListener('click', function () {
try { navigator.clipboard && navigator.clipboard.writeText(text); } catch (e) {}
b.textContent = 'copied \u2713';
setTimeout(function () { b.textContent = 'copy'; }, 1400);
});
}
copyBtn('btn-cp-install', 'cargo install git-queue');
copyBtn('btn-cp-sh', "curl --proto '=https' --tlsv1.2 -LsSf https://github.com/freshtonic/git-queue/releases/latest/download/git-queue-installer.sh | sh");
copyBtn('btn-cp-brew', 'brew install freshtonic/git-queue/git-queue');
copyBtn('btn-cp-ps', 'powershell -ExecutionPolicy ByPass -c "irm https://github.com/freshtonic/git-queue/releases/latest/download/git-queue-installer.ps1 | iex"');
copyBtn('btn-cp-cargo', 'cargo install git-queue');
// install: detect the visitor's OS and show its install options (with a manual toggle)
var osBtns = [].slice.call(document.querySelectorAll('[data-os-btn]'));
var osPanels = [].slice.call(document.querySelectorAll('[data-os-panel]'));
function detectOS() {
var s = ((navigator.userAgentData && navigator.userAgentData.platform) || navigator.platform || navigator.userAgent || '').toLowerCase();
if (s.indexOf('win') !== -1) return 'windows';
if (s.indexOf('linux') !== -1 || s.indexOf('android') !== -1) return 'linux';
return 'macos'; // mac/iOS and anything unknown default to macOS
}
function pickOS(os) {
osBtns.forEach(function (b) { b.style.cssText = tabStyle(b.getAttribute('data-os-btn') === os); });
osPanels.forEach(function (p) {
var applies = p.getAttribute('data-os-panel').split(' ').indexOf(os) !== -1;
p.style.display = applies ? '' : 'none';
});
}
osBtns.forEach(function (b) { b.addEventListener('click', function () { pickOS(b.getAttribute('data-os-btn')); }); });
if (osBtns.length) pickOS(detectOS());
// example tabs
var EXAMPLES = {"A": {"blurb": "Build a three-branch queue from trunk, describe the front PR, and open all three cross-linked PRs in one submit.", "session": "$ git checkout main\n$ git queue create types # front of the queue\n# \u2026edit, then:\n$ git queue commit -m \"Add domain types\"\n$ git queue describe -m \"Introduces the core domain types shared by the queue.\"\n\n$ git queue create service\n$ git queue commit -m \"Add service layer\"\n\n$ git queue create api\n$ git queue commit -m \"Expose HTTP API\"\n\n$ git queue status # see the three-branch queue\n$ git queue submit # opens PRs #1/3, #2/3, #3/3, cross-linked", "map": "<div style=\"border:1px solid #30363d; border-radius:6px; overflow:hidden; background:#0d1117; color:#e6edf3; font-family:-apple-system,BlinkMacSystemFont,'Segoe UI','Noto Sans',Helvetica,Arial,sans-serif; font-size:14px; line-height:1.5; text-align:left;\"><div style=\"display:flex; align-items:center; gap:8px; background:#161b22; border-bottom:1px solid #30363d; padding:9px 16px; font-size:13px; color:#8b949e;\"><span style=\"width:20px; height:20px; border-radius:50%; background:linear-gradient(135deg,#57d98a,#1f6feb); flex:none;\"></span><span><strong style=\"color:#e6edf3;\">freshtonic</strong> commented just now</span><span style=\"margin-left:auto; border:1px solid #30363d; border-radius:2em; padding:1px 8px; font-size:11px;\">Author</span></div><div style=\"padding:16px;\"><h3 style=\"margin:0 0 16px; font-size:1.25em; font-weight:600; color:#e6edf3;\">\ud83d\udcda feature PR \u00a0\u00b7\u00a0 2 of 3</h3><p style=\"margin:0 0 16px;\">Part of a queue. The PRs merge in FIFO order \u2014 the numbered order below, #1 first.</p><div style=\"margin:0 0 16px;\"><div style=\"margin:4px 0;\">\ud83d\udfe3 <a style=\"color:#58a6ff; text-decoration:none;\">#10 <code style=\"background:rgba(110,118,129,0.4); padding:0.15em 0.4em; border-radius:6px; font-family:ui-monospace,'JetBrains Mono',SFMono-Regular,monospace; font-size:85%;\">api</code></a> \u2192 <code style=\"background:rgba(110,118,129,0.4); padding:0.15em 0.4em; border-radius:6px; font-family:ui-monospace,'JetBrains Mono',SFMono-Regular,monospace; font-size:85%;\">main</code></div><div style=\"margin:4px 0;\">\u267b\ufe0f\ud83d\udfe2 <strong><a style=\"color:#58a6ff; text-decoration:none;\">#11 <code style=\"background:rgba(110,118,129,0.4); padding:0.15em 0.4em; border-radius:6px; font-family:ui-monospace,'JetBrains Mono',SFMono-Regular,monospace; font-size:85%;\">service</code></a> \u2192 <code style=\"background:rgba(110,118,129,0.4); padding:0.15em 0.4em; border-radius:6px; font-family:ui-monospace,'JetBrains Mono',SFMono-Regular,monospace; font-size:85%;\">api</code></strong> \u00a0\ud83d\udc48 <strong>this PR</strong></div><div style=\"margin:4px 0;\">\u23f3\ud83d\udfe2 <a style=\"color:#58a6ff; text-decoration:none;\">#12 <code style=\"background:rgba(110,118,129,0.4); padding:0.15em 0.4em; border-radius:6px; font-family:ui-monospace,'JetBrains Mono',SFMono-Regular,monospace; font-size:85%;\">ui</code></a> \u2192 <code style=\"background:rgba(110,118,129,0.4); padding:0.15em 0.4em; border-radius:6px; font-family:ui-monospace,'JetBrains Mono',SFMono-Regular,monospace; font-size:85%;\">service</code></div></div><p style=\"margin:0 0 4px; font-size:11.5px; color:#8b949e;\">\u2705 approved \u00b7 \u267b\ufe0f changes requested \u00b7 \u23f3 review pending \u00a0|\u00a0 \ud83d\udfe3 merged \u00b7 \ud83d\udfe2 open \u00b7 \u26ab closed \u2014 status as of the last <code style=\"background:rgba(110,118,129,0.4); padding:0.15em 0.4em; border-radius:6px; font-family:ui-monospace,'JetBrains Mono',SFMono-Regular,monospace; font-size:85%;\">git queue submit</code>.</p><p style=\"margin:0 0 4px; font-size:11.5px; color:#8b949e;\">\ud83e\udd5e Managed by git-queue \u2014 do not edit this list by hand.</p><h2 style=\"margin:16px 0 8px; font-size:1.3em; border-bottom:1px solid #30363d; padding-bottom:6px; color:#e6edf3;\">About this queue</h2><p style=\"margin:0 0 12px; color:#8b949e; font-style:italic;\"><your <code style=\"background:rgba(110,118,129,0.4); padding:0.15em 0.4em; border-radius:6px; font-size:85%;\">git queue describe</code> text></p><h2 style=\"margin:16px 0 8px; font-size:1.3em; border-bottom:1px solid #30363d; padding-bottom:6px; color:#e6edf3;\">About this branch</h2><p style=\"margin:0; color:#8b949e; font-style:italic;\"><your <code style=\"background:rgba(110,118,129,0.4); padding:0.15em 0.4em; border-radius:6px; font-family:ui-monospace,'JetBrains Mono',SFMono-Regular,monospace; font-size:85%;\">git queue describe</code> text></p></div></div>"}, "B": {"blurb": "Revise the front PR after review. amend rewrites its tip commit and auto-updates the branches above; sync catches up when trunk advances.", "session": "$ git queue down # \u2192 down to `types`\n# \u2026edit\u2026\n$ git add -A && git queue amend # revise the commit; service+api auto-update\n$ git queue submit # refresh all three PRs\n\n# Trunk advanced / teammate pushed:\n$ git queue sync # pull + requeue + push (with lease)", "map": "<div style=\"border:1px solid #30363d; border-radius:6px; overflow:hidden; background:#0d1117; color:#e6edf3; font-family:-apple-system,BlinkMacSystemFont,'Segoe UI','Noto Sans',Helvetica,Arial,sans-serif; font-size:14px; line-height:1.5; text-align:left;\"><div style=\"display:flex; align-items:center; gap:8px; background:#161b22; border-bottom:1px solid #30363d; padding:9px 16px; font-size:13px; color:#8b949e;\"><span style=\"width:20px; height:20px; border-radius:50%; background:linear-gradient(135deg,#57d98a,#1f6feb); flex:none;\"></span><span><strong style=\"color:#e6edf3;\">freshtonic</strong> commented just now</span><span style=\"margin-left:auto; border:1px solid #30363d; border-radius:2em; padding:1px 8px; font-size:11px;\">Author</span></div><div style=\"padding:16px;\"><h3 style=\"margin:0 0 16px; font-size:1.25em; font-weight:600; color:#e6edf3;\">\ud83d\udcda feature PR \u00a0\u00b7\u00a0 2 of 3</h3><p style=\"margin:0 0 16px;\">Part of a queue. The PRs merge in FIFO order \u2014 the numbered order below, #1 first.</p><div style=\"margin:0 0 16px;\"><div style=\"margin:4px 0;\">\ud83d\udfe3 <a style=\"color:#58a6ff; text-decoration:none;\">#10 <code style=\"background:rgba(110,118,129,0.4); padding:0.15em 0.4em; border-radius:6px; font-family:ui-monospace,'JetBrains Mono',SFMono-Regular,monospace; font-size:85%;\">api</code></a> \u2192 <code style=\"background:rgba(110,118,129,0.4); padding:0.15em 0.4em; border-radius:6px; font-family:ui-monospace,'JetBrains Mono',SFMono-Regular,monospace; font-size:85%;\">main</code></div><div style=\"margin:4px 0;\">\u267b\ufe0f\ud83d\udfe2 <strong><a style=\"color:#58a6ff; text-decoration:none;\">#11 <code style=\"background:rgba(110,118,129,0.4); padding:0.15em 0.4em; border-radius:6px; font-family:ui-monospace,'JetBrains Mono',SFMono-Regular,monospace; font-size:85%;\">service</code></a> \u2192 <code style=\"background:rgba(110,118,129,0.4); padding:0.15em 0.4em; border-radius:6px; font-family:ui-monospace,'JetBrains Mono',SFMono-Regular,monospace; font-size:85%;\">api</code></strong> \u00a0\ud83d\udc48 <strong>this PR</strong></div><div style=\"margin:4px 0;\">\u23f3\ud83d\udfe2 <a style=\"color:#58a6ff; text-decoration:none;\">#12 <code style=\"background:rgba(110,118,129,0.4); padding:0.15em 0.4em; border-radius:6px; font-family:ui-monospace,'JetBrains Mono',SFMono-Regular,monospace; font-size:85%;\">ui</code></a> \u2192 <code style=\"background:rgba(110,118,129,0.4); padding:0.15em 0.4em; border-radius:6px; font-family:ui-monospace,'JetBrains Mono',SFMono-Regular,monospace; font-size:85%;\">service</code></div></div><p style=\"margin:0 0 4px; font-size:11.5px; color:#8b949e;\">\u2705 approved \u00b7 \u267b\ufe0f changes requested \u00b7 \u23f3 review pending \u00a0|\u00a0 \ud83d\udfe3 merged \u00b7 \ud83d\udfe2 open \u00b7 \u26ab closed \u2014 status as of the last <code style=\"background:rgba(110,118,129,0.4); padding:0.15em 0.4em; border-radius:6px; font-family:ui-monospace,'JetBrains Mono',SFMono-Regular,monospace; font-size:85%;\">git queue submit</code>.</p><p style=\"margin:0 0 4px; font-size:11.5px; color:#8b949e;\">\ud83e\udd5e Managed by git-queue \u2014 do not edit this list by hand.</p><h2 style=\"margin:16px 0 8px; font-size:1.3em; border-bottom:1px solid #30363d; padding-bottom:6px; color:#e6edf3;\">About this queue</h2><p style=\"margin:0 0 12px; color:#8b949e; font-style:italic;\"><your <code style=\"background:rgba(110,118,129,0.4); padding:0.15em 0.4em; border-radius:6px; font-size:85%;\">git queue describe</code> text></p><h2 style=\"margin:16px 0 8px; font-size:1.3em; border-bottom:1px solid #30363d; padding-bottom:6px; color:#e6edf3;\">About this branch</h2><p style=\"margin:0; color:#8b949e; font-style:italic;\"><your <code style=\"background:rgba(110,118,129,0.4); padding:0.15em 0.4em; border-radius:6px; font-family:ui-monospace,'JetBrains Mono',SFMono-Regular,monospace; font-size:85%;\">git queue describe</code> text></p></div></div>"}, "C": {"blurb": "Turn one big branch into a reviewable queue. The editor shows [branch] section headers over the commits; submit opens the PRs.", "session": "$ git checkout big-feature\n$ git queue edit # editor: [branch] sections over the commits\n# e.g. [api]\n# <sha> Add API\n# <sha> Add client\n# [ui]\n# <sha> Add UI\n$ git queue submit", "map": "<div style=\"border:1px solid #30363d; border-radius:6px; overflow:hidden; background:#0d1117; color:#e6edf3; font-family:-apple-system,BlinkMacSystemFont,'Segoe UI','Noto Sans',Helvetica,Arial,sans-serif; font-size:14px; line-height:1.5; text-align:left;\"><div style=\"display:flex; align-items:center; gap:8px; background:#161b22; border-bottom:1px solid #30363d; padding:9px 16px; font-size:13px; color:#8b949e;\"><span style=\"width:20px; height:20px; border-radius:50%; background:linear-gradient(135deg,#57d98a,#1f6feb); flex:none;\"></span><span><strong style=\"color:#e6edf3;\">freshtonic</strong> commented just now</span><span style=\"margin-left:auto; border:1px solid #30363d; border-radius:2em; padding:1px 8px; font-size:11px;\">Author</span></div><div style=\"padding:16px;\"><h3 style=\"margin:0 0 16px; font-size:1.25em; font-weight:600; color:#e6edf3;\">\ud83d\udcda feature PR \u00a0\u00b7\u00a0 3 of 3</h3><p style=\"margin:0 0 16px;\">Part of a queue. The PRs merge in FIFO order \u2014 the numbered order below, #1 first.</p><div style=\"margin:0 0 16px;\"><div style=\"margin:4px 0;\">\ud83d\udfe3 <a style=\"color:#58a6ff; text-decoration:none;\">#10 <code style=\"background:rgba(110,118,129,0.4); padding:0.15em 0.4em; border-radius:6px; font-family:ui-monospace,'JetBrains Mono',SFMono-Regular,monospace; font-size:85%;\">api</code></a> \u2192 <code style=\"background:rgba(110,118,129,0.4); padding:0.15em 0.4em; border-radius:6px; font-family:ui-monospace,'JetBrains Mono',SFMono-Regular,monospace; font-size:85%;\">main</code></div><div style=\"margin:4px 0;\">\u267b\ufe0f\ud83d\udfe2 <a style=\"color:#58a6ff; text-decoration:none;\">#11 <code style=\"background:rgba(110,118,129,0.4); padding:0.15em 0.4em; border-radius:6px; font-family:ui-monospace,'JetBrains Mono',SFMono-Regular,monospace; font-size:85%;\">service</code></a> \u2192 <code style=\"background:rgba(110,118,129,0.4); padding:0.15em 0.4em; border-radius:6px; font-family:ui-monospace,'JetBrains Mono',SFMono-Regular,monospace; font-size:85%;\">api</code></div><div style=\"margin:4px 0;\">\u23f3\ud83d\udfe2 <strong><a style=\"color:#58a6ff; text-decoration:none;\">#12 <code style=\"background:rgba(110,118,129,0.4); padding:0.15em 0.4em; border-radius:6px; font-family:ui-monospace,'JetBrains Mono',SFMono-Regular,monospace; font-size:85%;\">ui</code></a> \u2192 <code style=\"background:rgba(110,118,129,0.4); padding:0.15em 0.4em; border-radius:6px; font-family:ui-monospace,'JetBrains Mono',SFMono-Regular,monospace; font-size:85%;\">service</code></strong> \u00a0\ud83d\udc48 <strong>this PR</strong></div></div><p style=\"margin:0 0 4px; font-size:11.5px; color:#8b949e;\">\u2705 approved \u00b7 \u267b\ufe0f changes requested \u00b7 \u23f3 review pending \u00a0|\u00a0 \ud83d\udfe3 merged \u00b7 \ud83d\udfe2 open \u00b7 \u26ab closed \u2014 status as of the last <code style=\"background:rgba(110,118,129,0.4); padding:0.15em 0.4em; border-radius:6px; font-family:ui-monospace,'JetBrains Mono',SFMono-Regular,monospace; font-size:85%;\">git queue submit</code>.</p><p style=\"margin:0 0 4px; font-size:11.5px; color:#8b949e;\">\ud83e\udd5e Managed by git-queue \u2014 do not edit this list by hand.</p><h2 style=\"margin:16px 0 8px; font-size:1.3em; border-bottom:1px solid #30363d; padding-bottom:6px; color:#e6edf3;\">About this queue</h2><p style=\"margin:0 0 12px; color:#8b949e; font-style:italic;\"><your <code style=\"background:rgba(110,118,129,0.4); padding:0.15em 0.4em; border-radius:6px; font-size:85%;\">git queue describe</code> text></p><h2 style=\"margin:16px 0 8px; font-size:1.3em; border-bottom:1px solid #30363d; padding-bottom:6px; color:#e6edf3;\">About this branch</h2><p style=\"margin:0; color:#8b949e; font-style:italic;\"><your <code style=\"background:rgba(110,118,129,0.4); padding:0.15em 0.4em; border-radius:6px; font-family:ui-monospace,'JetBrains Mono',SFMono-Regular,monospace; font-size:85%;\">git queue describe</code> text></p></div></div>"}};
function tabStyle(on) {
return 'cursor:pointer; font-family:\'JetBrains Mono\',monospace; font-size:13px; font-weight:600; padding:9px 15px; border-radius:9px; border:1px solid ' +
(on ? 'var(--green)' : 'var(--line)') + '; background:' + (on ? 'color-mix(in srgb, var(--green) 12%, var(--surface))' : 'var(--surface)') +
'; color:' + (on ? 'var(--head)' : 'var(--dim)') + ';';
}
var tabs = ['A', 'B', 'C'];
function pick(id) {
tabs.forEach(function (t) { document.getElementById('tab-' + t).style.cssText = tabStyle(t === id); });
var ex = EXAMPLES[id];
document.getElementById('ex-blurb').textContent = ex.blurb;
document.getElementById('ex-session').textContent = ex.session;
document.getElementById('ex-map').innerHTML = ex.map;
}
tabs.forEach(function (t) {
document.getElementById('tab-' + t).addEventListener('click', function () { pick(t); });
});
pick('A');
// command filter
var input = document.getElementById('cmd-filter');
var rows = [].slice.call(document.querySelectorAll('[data-cmd-row]'));
var groups = [].slice.call(document.querySelectorAll('[data-cmd-group]'));
input.addEventListener('input', function () {
var q = input.value.trim().toLowerCase(), count = 0;
rows.forEach(function (r) {
var show = !q || r.getAttribute('data-search').indexOf(q) !== -1;
r.style.display = show ? '' : 'none';
if (show) count++;
});
groups.forEach(function (g) {
var any = [].slice.call(g.querySelectorAll('[data-cmd-row]')).some(function (r) { return r.style.display !== 'none'; });
g.style.display = any ? '' : 'none';
});
document.getElementById('cmd-count').textContent = count + (count === 1 ? ' cmd' : ' cmds');
});
// how-do-i accordion (single open)
var openHow = 0;
[].slice.call(document.querySelectorAll('[data-howto]')).forEach(function (btn) {
btn.addEventListener('click', function () {
var i = parseInt(btn.getAttribute('data-howto'), 10);
openHow = openHow === i ? -1 : i;
[].slice.call(document.querySelectorAll('[data-howto-answer]')).forEach(function (a) {
var j = parseInt(a.getAttribute('data-howto-answer'), 10);
a.style.display = j === openHow ? '' : 'none';
document.querySelector('[data-howto-sign="' + j + '"]').textContent = j === openHow ? '\u2212' : '+';
});
});
});
// faq accordion (single open)
var open = 0;
[].slice.call(document.querySelectorAll('[data-faq]')).forEach(function (btn) {
btn.addEventListener('click', function () {
var i = parseInt(btn.getAttribute('data-faq'), 10);
open = open === i ? -1 : i;
[].slice.call(document.querySelectorAll('[data-faq-answer]')).forEach(function (a) {
var j = parseInt(a.getAttribute('data-faq-answer'), 10);
a.style.display = j === open ? '' : 'none';
document.querySelector('[data-faq-sign="' + j + '"]').textContent = j === open ? '\u2212' : '+';
});
});
});
})();
</script>
</body>
</html>