git в emacs
Слабоначатое.
Тут есть vc-что-нибудь, довольно минималистичная, при этом довольно универсальная штука, способная работать с разными системами управления версиями. Я применяла только для git и fossil, но там есть ещё.
Тут есть magit – довольно развесистая штука, заточенная именно под git. Прекрасно можно использовать параллельно с vc-git, они друг другу не мешают.
И да, magit в незапамятные былые времена подтормаживал на большом репозитории, с которым мне пришлось столкнуться на работе. vc при работе с ним же не пытался задавать, такскзать, лишних вопросов – типа, сразу отображать состояние или ещё что — поэтому позволял приемлемее работать.
Есть всякие разные отдельные полезности вне этих двух вариантов.
- https://github.com/sbougerel/autosync-git — кажется, раньше было autosync-magit
git push - способы
https://stackoverflow.com/questions/13736222/how-to-git-push-using-git-emacs
- Во-первых, конечно, magit-push в Magit.
- Во-вторых,
C-x v P, longer versionM-x vc-push(as noted by @CAT0). - В-третьих, запустить git-push как внешнюю команду, но из emacs
M-& git push [Enter], longer version:M-x async-shell-command [Enter] git push [Enter]. As pointed out by @mariotomo this is better than the synchronous version below because it opens a buffer for the output.M-! git push [Enter]longer version:M-x shell-command [Enter] git push [Enter](как раз синхронная).
для magit
- https://mbork.pl/2024-04-08_Even_more_Magit_tips – занятности в magit.
- https://magit.vc/manual/forge/Branching.html#Branching - что-то про то, как быть с гитлабом через magit. Forge - какие-то плюшки по работе с issues и ещё какими-то радостями гитлабов и т.п.
Из magit в vc
- https://www.manueluberti.eu//emacs/2021/11/27/vc/ - собстно, текстег про это.
- https://paste.sr.ht/~akagi/ae81410ffa22f5572c206330d024c0613c33a6f5 - доработанная табличка оттуда.
| Operations | VC | VC-dir (same commands) | Magit |
------------------------------------------------------------------------------------------–—+
| Project status | project-vc-dir (C-x p v) | — | magit-status (C-x g) |
| Pull | vc-update (C-x v +) | … (+) | magit-pull (F p) |
| Checkout | vc-retrieve-tag (C-x v r) | … (B s) | magit-branch (b b) |
| New branch | C-u vc-create-tag (C-u C-x v s) | … | magit-branch (b c) |
| Commit | vc-next-action (C-x v v) | … (v) | magit-commit (c c) |
| Rebase | shell-command (M-!) + git rebase master | … | magit-rebase (r p) |
| Push | vc-push (C-x v P) | … (P or C-u P) | magit-push (P p) |
| Stash | vc-git-stash-%operation% | … | magit-stash (z) |
| Log | vc-print-root-log (C-x v L) | … (L) | magit-log (l l) |
Чтобы закоммитить несколько файлов разом, в vc-dir выделяем несколько измененных файлов кнопочкой m, потом "следующее действие" по m.
- https://www.gnu.org/software/emacs/manual/html_node/emacs/Old-Revisions.html
- C-x v =
- Compare the work files in the current VC fileset with the versions you started from (vc-diff). With a prefix argument, prompt for two revisions of the current VC fileset and compare them. You can also call this command from a Dired buffer
разное
- https://www.emacswiki.org/emacs/Git - тут уйма всего, и вообще было б полезно, конечно.
- https://gitlab.com/pidu/git-timemachine - шариться по версиям файла. Кажется, оно же более актуальное — https://codeberg.org/pidu/git-timemachine. Вот вроде подолгу могу не ставить и забывать, но нет-нет, да и занадобится, удобное. :)
- https://orgmode.org/worg/org-contrib/org-git-link.html — ссылки в org-mode на конкретную версию файла в git.
