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
|
# -*- mode: org -*-
* v4.5.0 2026-01-01
- Removed support for loading Magit extensions from ".git/config".
Please [[https://github.com/magit/magit/commit/d662ec107e74a05a0348ca75c89ebd127d658656][use ~.dir-locals.el~ instead]]. d662ec107e
- Reworked how the global ~magit-auto-revert-mode~ is, or is not,
enabled at startup. Enabling ~global-auto-revert-mode~ now disables
this mode. 38a916f555..de766d2968 et al.
- Simplified ~magit-wip-mode~. This involves removing all other wip
modes (which allowed using only a subset of the protection offered
by ~magit-wip-mode~) and using the new ~magit-before-change-functions~
and ~magit-after-apply-functions~ hooks. 98ef107037..fa629ad5b5
- Added experimental support for calling Lisp hooks from Git hooks,
and added a few such hooks: ~magit-common-git-post-commit-functions~,
~magit-git-post-commit-functions~, ~magit-git-post-merge-functions~
and ~magit-git-post-rewrite-functions~.
- Replaced option ~magit-section-visibility-indicator~ (singluar) with
new option ~magit-section-visibility-indicators~ (plurarl) to better
support emacs sessions that have both terminal and gui frames.
2d8f43e681
- ~mouse-set-point~ is now remapped to Magit's variant. fa5906621a
- ~magit-autoloads~ is now loaded exactly once. 3d1a008f18
- Fixed custom type of ~magit-blame-styles~. 84c5c8c8c6
- Fixes regression in ~magit-rebase-autosquash~. It no longer excluded
the merge-base. 54e460a701
- A few hook functions were not autoloaded. #5464
- Some refinements were calculated for the diff in the commit
message buffer, despite not actually being displayed. #5483
- Commands for showing logs for wip branches were no longer displayed
in the log menu, despite ~magit-wip-mode~ being enabled. #5488
- Added new option ~magit-wip-debug~. 655bc502a3
- Various build improvements.
* v4.4.2 2025-10-06
- Addressed harmless compiler warning.
* v4.4.1 2025-10-06
- Added new option ~magit-log-trailer-labels~. #5432
- Added new command ~magit-delete-shelved-branch~. 31c0ae17d3
- Added new variable ~magit-save-repository-buffers-predicate~. #5450
- Fixed saving the value of the menus ~magit-diff~, ~magit-log~,
~magit-diff-refresh~ and ~magit-log-refresh~. c7ba53b4b4
- A form from the ~cond-let~ library made it into the autoloads file,
where that library isn't being loaded. #5451
- ~magit-revert-rev-file-buffer~ did not respect a value of ~nil~ for
~enable-local-variables~. 5eb31a419a
- Improved commands for jumping to specific sections in revision
buffers. #5442
- Improved consistency of scroll command bindings. #5453
- It is possible again to exit ~magit-completing-read-multiple~ with
no input if REQUIRE-MATCH is ~t~. b5066e5fa4
- Diffs that appear in logs could not be parsed in some edge cases.
#5454
* v4.4.0 2025-09-09
- At least Emacs 28.1 is required now. Emacs 30.1 was released
earlier this year, so Emacs "oldoldstable" is still supported.
- Code for tracking a position within a file across versions and
diffs, and the commands that build on that to allow jumping to
the same location in another version or diff, are undergoing
heavy refactoring and improvements. This is paying off technical
dept and prepares for upcoming user-level improvements as well
as for new features. Some changes in behavior already appear in
this release, as described below.
- For staged and unstaged changes, ~magit-diff-visit-file~ (~RET~) now
always visits the blob actually corresponding to the line at point,
as it already did for committed changes. Previously it failed to
visit the index blob from an unstaged removed line when that file
has staged changes; and it failed to visit the index blob from a
staged added line.
Visiting the file in the worktree is very useful, but, instead of
~RET~, I recommend using ~C-<return>~ (~magit-diff-visit-worktree-file~).
The new option ~magit-diff-visit-prefer-worktree~ allows restoring
the old behavior. See [[https://docs.magit.vc/magit/Visiting-Files-and-Blobs-from-a-Diff.html][Visiting Files and Blobs from a Diff]].
- "Blob navigation" is now aware of index blobs. It is possible to
navigate between such blobs, and the HEAD blob or the file on disk,
using the same key bindings used to time travel from one committed
blob to another. See [[https://docs.magit.vc/magit/Minor-Mode-for-Buffers-Visiting-Blobs.html][Minor Mode for Buffers Visiting Blobs]] and
[[https://docs.magit.vc/magit/Commands-for-Buffers-Visiting-Files.html][Commands for Buffers Visiting Files]].
- When quitting a blob-visiting buffer with ~q~, it is no longer
killed, iff it is being displayed in an additional window. The
behavior can be changed by binding ~q~ in ~magit-blob-mode-map~ to
one of the commands ~magit-bury-or-kill-buffer~, ~magit-bury-buffer~,
or ~magit-kill-this-buffer~. The former two are new commands.
731642756f
- ~magit-status-here~ now places the cursor within the diff of unstaged
changes, if the current line in a file-visiting buffer has unstaged
changes. If it does not, then it falls back to going to the
corresponding staged change. #4814
- Even though ~auto-revert-mode~ is enabled, if that has not yet kicked
in and the user visits a file that needs reverting, they used to be
asked to confirm the revert. efaf91d8af
- ~magit-completing-read~ and ~magit-completing-read-multiple~ can now
require non-empty input. If REQUIRE-MATCH is ~any~, then the user
can exit with input that does not appear in the collection, but
is not allowed to exit with zero input. #5422
- ~magit-completing-read-multiple~ now adds the default choice to the
set of valid choices. 7167f70665
- ~magit-read-branch-or-commit~ can now exclude more than one possible
choice from the set of valid choices. 10c366ed52
- Improved minibuffer input for worktree commands, including adding
new option ~magit-read-worktree-directory-function~.
- Section visibility indicators can now be displayed in the left
margin. #5424
- References in the ~refs/pullreqs~ namespace are no longer offered
as completion candidates. 87ddd8f7c4
- Improved font-lock in ~git-rebase-mode~. 3857b8bce9..9654f5e094
- Added new face ~magit-diff-conflict-heading-highlight~. 2e76ec9337
- Added new command ~magit-revision-jump~, a menu for use in
~magit-revision-mode~, bound to ~j~. acf71f7eb4
- ~magit-dired-jump~ now supports ~magit-repolist-mode~. 8c4a903886
- Fixed a regression ~magit--refresh-buffer-set-positions~, added in
v4.3.7, which messed up the window-start. 406a3094a8
- ~magit-setup-buffer~ and ~magit-refresh-buffer~ take two new keyword
arguments INITIAL-SECTION and SELECT-SECTION. Two arguments of
~magit-setup-buffer-internal~ are now keyword arguments.
ced0984540, c4def6d99a
- All text inserted into Magit buffers that previously used ~face~
now use ~font-lock-face~ and ~magit-section-mode~ can therefore set
~font-lock-defaults~. Previously if some third-party packages used
~font-lock-add-keywords~, some of Magit's own fontification would
be lost. Third-party packages that use ~magit-section-mode~, might
need to be adjusted accordingly. 7de0f1335f, b4768acb1f
- Daring to use my new Cond-Let package and other shorthands.
08dafc1732..1c48327a06, b377adb68c
* v4.3.8 2025-07-05
Bugfixes:
- In v4.3.7 we started to restore the display-start positions of the
windows displaying a buffer that is being refreshed, but in log
buffers that is undesirable. After creating a new commit we want
that to immediately be displayed at the top of windows displaying
log buffers. #5403
- Refreshing was skipped after discarding all untracked files.
- When sub-directories contain ".gitignore" files, then invoking
~magit-discard~ on the "Untracked files" section did not necessarily
remove the same set of files as listed in that section. (At least
it did show the files, which would be removed, in the confirmation
prompt.) #5405
* v4.3.7 2025-07-01
- Refreshing a buffer causes its content to be recreated, which can
result in scrolling. Now we attempt to restore the display-start
positions of the windows displaying the buffer. #5403
- When running ~git~ for side-effects and that signals an error, we
did not augment the error message to inform the user that the full
output can be found in the process buffer. When the error is not
signaled, we did already append that hint to the message. Also
added a new option, ~magit-show-process-buffer-hint~, for people who
are already aware of the process buffer and would like to avoid
the noisy reminder. #5396
Bugfixes:
- Some instructions inserted into rebase sequence buffers were not
prefixed with ~comment-start~, instead # was used unconditionally.
#5388
- Fixed a regression in v4.3.6, which caused a conflict between the
overlays used for section highlighting and section selection, if
both of these faces relied on the same face property (likely the
foreground color). #5389
- Hunks could remain painted as selected when navigating away. #5393
- The log arguments "--grep" and "--graph" are no longer mutually
exclusive, but we still dropped the latter when the former was
used. #5391
- ~magit-save-repository-buffers~ errored on older Emacs releases,
if the value of the variable by the same name is ~ask~. #5399
- ~magit-after-save-refresh-status~ did not honor ~magit-inhibit-refresh~.
d9d2f6c312
* v4.3.6 2025-06-01
- Generalized and heavily refactored the code, previously used only to
highlight diff-related sections and to paint hunks, so that it can
be used for other sections as well. The new implementation should
also be a bit faster. cfe4faaaf6^..c556fee1bd
- A single-section selection now requires a non-empty region.
6c4c16942a
- When creating a stash, "On <branch>: " is now offered as a second
future history element. 75c6191999, 9b81df36b4
- Added new commands ~git-rebase-drop~, ~git-rebase-alter~ and
~git-rebase-squish~. 479c467080, 9674c4755a
Bugfixes:
- Fixed issues concerning date handling in log margins. #5373
- The list of rebase actions in the status buffer could contain
invalid elements derived from comments in Git's list of such
actions. 91806dc729
- Applying the region used to fail, if some part of the same hunk but
outside the region has conflicts, even if the part in the region did
not. 9e551d9eb7
* v4.3.5 2025-05-14
Bugfixes:
- Fixed a v4.3.3 regression in inserting rebase actions into the
status buffer when stopping at the last commit. #5365
* v4.3.4 2025-05-13
- Arguments, that are normally set by cycling through the possible
values displayed in the menu, can now also be set using completion,
by using a prefix argument. #5362
Bugfixes:
- Matching references were no longer displayed on the first line of
revision buffers. 48b158500d
- Fixed a v4.3.3 regression in inserting rebase actions into the
status buffer when ~--rebase-merges~ is specified. #5365
- On the "Untracked files" section, ~k~ no longer worked as intended.
#5366
Also contains code and documentation cleanups and improvements.
* v4.3.3 2025-05-01
- ~magit-section-show-level~ now acts on all selected sections. #5354
- Inserting the list of commits being rebased into the status buffer
is now much faster. 8e72767262
- All rebase actions are now inserted into the status buffer.
69b310e109
- While editing the list of commits and actions to be rebased
~git-rebase-kill-line~ (~k~) on a commented line now uncomments it.
ff44ee1bc3
- Added new variants of commands that deal with files for use in Dired
buffers, and improved existing variants. In Dired, these commands
are available from ~magit-file-dispatch~ (~C-c M-g~). 542c2f8a75 et al.
- ~magit-branch-shelve~ now prepends the date to the refname, and
~magit-branch-unshelve~ removes such prefixes. 78ffd1a389
- The new function ~magit-insert-shelved-branch~ can be added to
~magit-refs-sections-hook~ to list shelved branches. d6b7784547
- Added new command ~magit-wip-purge~, which removes old branches
created by ~magit-wip-mode~. d5e0f3a639
- ~magit-blame-styles~ now supports inserting truncated commit hashes.
#4057
- Added new command ~magit-mouse-set-point~. 3c9e519197
Also contains code and documentation cleanups and improvements.
* v4.3.2 2025-04-01
- Removed legacy options ~magit-wip-*-mode-lighter~. 225ea6fd00
- ~magit-log-current~ now falls back to displaying the log for ~HEAD~ if
no branch is checked out, and the now redundant ~magit-log-head~ is
no longer displayed in the ~magit-log~ menu by default. c8b1e12bd5
- Renamed ~magit-merge-into~ to ~magit-merge-dissolve~ and changed the
key binding in the ~magit-merge~ menu from ~i~ to ~d~. The description
in that menu already was "dissolve". Do this to make it more
obvious that this command deletes the source branch after it has
been merged into the target branch. #4386
- Added new option ~magit-process-apply-ansi-colors~ (but discourage
its use). #5348
- Support for Ido has been moved out into a new package ~magit-ido~.
6aec967ee4
Bugfixes:
- ~magit-after-save-refresh-buffers~ did not respect
~magit-inhibit-refresh~. c0a8e694b9
- When washing of a section was delayed and it ends in an empty line,
that line was not always made part of the section. f6f25e6566
- In some cases section specific key bindings were not made available
as intended. 6ce1ece580, 3f79700f1b
- In some cases ~magit-toggle-buffer-lock~ has to uniquify buffer names
but failed to do so. #5330
- After applying a hunk, the buffer was refreshed twice. #5343
- The diff shown by ~magit-diff-paths~ was not washed. #5093
Also contains more code and documentation cleanups and improvements.
* v4.3.1 2025-03-02
- Added new option ~magit-format-file-function,~ and two functions to
optionally prefix file names with icons, with the help of either
~all-the-icons~ or ~nerd-icons~. #5308
- Added new commands ~magit-previous-reference~ and ~magit-next-reference~,
with entry point ~C-c C-r~. Enable ~repeat-mode~ to keep navigating with
~p~ and ~n~. #5310
Bugfixes:
- ~magit-commit-revise~ failed if no arguments were used. #5306
- Some arguments were missing from diff menus when invoked from
the status buffer. #5309
- In some menus the bindings for ~--signoff~ conflicted with those for
other arguments. #5312
- Fixed unlikely issue in ~magit-git-mergetool~. 66e3ddffe4
- Unknown Git trailers resulted in a display error while writing
commit messages. 8c27c910ca
- When the word at point matched the name of a branch, that was
unconditionally treated as the commit-at-point. This should only be
done when that word is shown using an appropriate face. 2b3f2cb9ad
- Fixed bug in ~magit-section-cycle-diffs~. #5319
- ~magit-stage-untracked~ was a bit fragile. #5325
* v4.3.0 2025-02-04
- Added new option ~magit-refs-show-branch-descriptions~. 42ed6c1966
- When a stash cannot be applied using the trivial method, the user is
offered some fallback methods. The presentation of those has been
improved. #5253 a08b4dd513
- Added new hook options ~magit-revision-wash-message-hook~ and
~magit-log-wash-summary-hook~, and populate them with new and
existing highlighting functions, making it easier to remove default
highlighting and to add custom highlighting. This also increases
consistency between how commit summaries are shown in logs and when
displaying complete commit messages. f54fce0ecc..b86fe009e2
- ~amend!~ markers are now highlighted like ~fixup!~ and ~squash!~ markers.
#5261
- ~magit-commit-create~ no longer amends to HEAD when called with a
prefix argument. The ~magit-commit~ menu offers four amend commands.
That should be good enough. 5e60aa72e5
- ~magit-commit~ no longer features the obscure ~magit-commit-reshelve~ by
default, but it can quickly be reinstated, using the level mechanism.
20eb323b47
- Added new commands ~magit-commit-alter~ and ~magit-commit-revise~,
completing the already extensive set of "fixup" commands. #5261
- Improved commit menu, documentation and implementation details.
#5261
- The branch at point is detected in more contexts now, i.e., when
there is not actually a branch at point, but one can unambiguously
be derived from the thing at point. 4876f1921e
- Reworked ~magit-process-password-prompt-regexps~ to be more permissive
and better structured. Hopefully that means we have to extend it
less frequently going forward, when users run into new prompts.
#5288
- Speed up listing untracked files in the status buffer, simplify how
the list is configured, and give up on optionally using a tree.
#5284
- Argument ~--signoff~ is now available in all menus that create commits.
However, it is no longer shown in any menu by default. See the end
of [[https://docs.magit.vc/transient/Enabling-and-Disabling-Suffixes.html][Enabling and Disabling Suffixes]] to learn how to enable it in all
menus at once in a single action. #5297
- Began using the ~##~ macro from the ~llama~ package. 0a64982100
- Stopped depending on the ~dash~ package. e40e8f1994
Bug fixes:
- When applying a stash, it was not always discovered when the trivial
method was unsuccessful, and so the user was not offered the use of
a fallback method. #5253 929eb4dca5
- ~git-commit.el~ did not require ~magit-process~, which was only a
problem when it is loaded without also loading the rest of Magit.
#5280.
- The use of an external diff drivers was not prevented in some
places. #5282
- ~magit-blame-maybe-show-message~ did not protect against interpreting
% in commit messages as %-specs. d0e795f423
- Parts of commit message headers lost the intended background color.
46c3d8b0ad
- The confirmation prompt of ~magit-worktree-delete~ failed to name the
affected worktree. #5286
- The wrong suffix color was used for ~magit-commit-absorb~ and
~magit-commit-autofixup~. bfadd41079
- ~magit-stash-index~ did not use ~magit-stash-read-message-function~.
#5295
- Fixed an error that occurred when creating ~magit-hunk-section-map~
and the user has disabled ~smerge-command-prefix~. The same bug
exists in Emacs since 29.1, so this will only help users stuck
on Emacs 28. #5300
- When the value of a diff or log menu was being initialized from the
arguments in the current buffer and the diff/log was already limited
to a set of files, then all other arguments were discarded. #5304
* v4.2.0 2025-01-01
- At least Git 2.25.0 is required now. 033a0c0cdc
- At least Emacs 27.1 is required now. c1a86066e8
- Added new command ~magit-toggle-profiling~. f637dd1877
- Added new command ~magit-toggle-subprocess-record~. ec1f403af1
Bug fixes:
- Fixed a regression in ~transient-init-value~. 5b4c4aea1b
- Fixed setting ~fill-paragraph-function~ in
~git-commit-setup-changelog-support~. 139e0fcff3
- ~magit-log-refresh~ lacked the ~--since~ and ~--until~ arguments, which
were already available in ~magit-log~. 3ecebe8d11
- Enabling verbose output in ~magit-commit-absorb~ caused an error.
#5272
- In logs, no longer strip ~heads/~ prefix from branch names if a tag
with the same name exists. 5cb3492464
- ~magit-list-special-refnames~ returned nonsense. #5277
* v4.1.3 2024-12-06
- For most important sections, if an error occurs while inserting the
section, the error message is now displayed in the section body.
#5255
- ~magit-submodule-populate~ now supports ~--recursive~. #5191 #5256
- Improved ~magit-process-password-prompt-regexps~. #5257
Bug fixes:
- ~magit-stash-pop~ and ~magit-stash-apply~ sometimes installed conflicts
for the user to resolve that are more complicated than they need to
be. #5253
- ~magit-stash-push~ placed ~--~ before other arguments. #5260
- ~magit-autorevert~ failed to require ~magit-process~. #5263
* v4.1.2 2024-11-02
- Add various minor process logging improvements:
5b30c05d3a magit--git-insert: Collapse process section if appropriate
b11524120e magit--git-insert: Optionally always log to process buffer
cd6cf89d6a Use different face for debug-only process sections
bba06845de magit-process-insert-section: Improve file-path comparison
f2a6133443 magit-run-git-async: No longer clutter ~*Messages*~ buffer
Bug fixes:
- If the left margin was in use before ~magit-blame-mode~ started using
that margin, then the old width was not restored when the mode was
disabled. #5236
- Prior to Tramp being loaded, setting ~magit-tramp-pipe-stty-settings~
to ~nil~ resulted in an error, due to ~tramp-pipe-stty-settings~ not
being bound yet. #5240
- ~magit-copy-section-value~ no longer did anything for most section
types. #5244.
- Global git arguments often got added twice to the list of arguments
ultimately passed to git. 914285a5e8
- Inserting the headers of status buffers involves temporary changes
to ~magit-insert-section-hook~. These changes were not restricted to
the current buffer, causing errors when ~magit-git-debug~ is enabled
and we thus insert sections in the process buffer, while the status
buffer is being refreshed. 11e13640c4
- Some ~git~ errors were not logged despite ~magit-git-debug~ being
enabled. 874fb0fede
- ~magit-browse-thing~ and ~magit-visit-thing~ tried to turn anything
at point into an URL. Now the bail if there is no URL at point.
7c842b8ac0
* v4.1.1 2024-10-01
- Avoid unnecessary work when ~auto-revert-remote-files~ is ~nil~. #5222
- Improved default choice offered by ~magit-branch-reset~ and
~magit-reset-*~. #5230
Bug fixes:
- Added a workaround for a regression in Git v2.46.0. #5212
- Section-specific bindings were removed when a section was expanded
whose body is not inserted until the expansion takes place.
9395de2c94
- Addressed an incompatibility with Eglot. #5226
- Adapted to a change in ~define-globalized-minor-mode~ in Emacs 30,
which caused ~diff-hl-mode~ to be enabled in blob buffers. #5229
- When adding the commit at point to the completion defaults, it was
assumed that ~minibuffer-default-add-function~ cannot be nil.
6d0075f523
- ~magit-blame--format-string-1~ didn't handle a list of faces
correctly. 5395798301
- Addressed an incompatibility with Indent-Bars. #5233
* v4.1.0 2024-09-01
- The library ~git-commit.el~ is no longer distributed as a separate
package, ~git-commit~, but as part of the ~magit~ package.
- Improved ~magit-tag-release~'s consistency and handling of arguments.
#5102
- Updated tooling and other housekeeping.
Bug fixes:
- Only use an explicit range in ~magit-insert-recent-commits~, when also
using ~--graph~. With ~--graph~ it increases performance noticeably,
but without it decreases performance somewhat. #5075
- ~magit-completing-read-multiple~ now shows the default choice in the
prompt, if a completion framework is used, for which that is useful.
#5205.
* Older releases
See ~docs/RelNotes/~.
|