emacs magit!
This commit is contained in:
parent
3954bfff8e
commit
4d53a3c190
@ -155,5 +155,85 @@ tiling window: C-x [1..3]
|
||||
C-k cut C-y paste
|
||||
show only headlines: navigate to first heading and do C-c C-k
|
||||
[[~/src/dox/docs/org/emacs.org][emacs goodies]]
|
||||
[[http://oremacs.com/worf/README.html][marking]]
|
||||
* execute scripts / commands
|
||||
https://www.gnu.org/software/emacs/manual/html_node/emacs/Shell.html
|
||||
|
||||
* install packages
|
||||
[[https://www.gnu.org/software/emacs/manual/html_node/emacs/Packages.html#Packages][list packages]]
|
||||
M-x list-packages
|
||||
C-h P (describe-package
|
||||
[[https://www.gnu.org/software/emacs/manual/html_node/emacs/Package-Installation.html#Package-Installation][install package]]
|
||||
M-x package-refresh-contents
|
||||
M-x package-install
|
||||
* emax & git
|
||||
https://www.emacswiki.org/emacs/Git
|
||||
> Emacs comes with a generic version control front end called VersionControl or VC. It supports Git and many other version control system (vcs). This is a good choice if you use other vcs besides Git or have no desire to use features unique to Git.
|
||||
C-x v = vc-diff -- diff with other revisions
|
||||
https://www.emacswiki.org/emacs/VersionControl#VC
|
||||
|
||||
** Magit
|
||||
an Emacs mode for Git [[https://masteringemacs.org/article/introduction-magit-emacs-mode-git][intro]]
|
||||
*** Installation
|
||||
[[https://magit.vc/manual/magit/Installing-from-Melpa.html#Installing-from-Melpa][install with melpa]]
|
||||
M-x package-refresh-contents
|
||||
M-x package-install RET magit RET
|
||||
**** debian stable (stretch)
|
||||
requires emacs-25 fro debian testing ([[https://www.debian.org/releases/testing/][buster]]).
|
||||
To install it needs to upgrade libc (core system library) which could break packages.
|
||||
(Looked through [[https://bugs.debian.org/cgi-bin/pkgreport.cgi?dist=unstable;package=emacs][open emacs bugs]] and couldn't find anything grave.)
|
||||
Easiert is to build it from source (see below)
|
||||
|
||||
*** Usage
|
||||
[[https://github.com/magit/magit/wiki/Cheatsheet][cheatsheet]]
|
||||
[[https://magit.vc/manual/magit/][manual]]
|
||||
Start: M-x magit-status
|
||||
Quit: q
|
||||
Help: ?
|
||||
|
||||
**** Staging and Unstaging Items
|
||||
> The key take away is that you can stage “items” – not just the whole file, but the hunks in a diff, for selective staging. The killer feature here is how it displays this information, using its “levels” system. Magit lets you expand and collapse staged and unstaged files with TAB. For more granular control, you can use M-1 through to M-4 for all the files; and 1 to 4 for the selected one.
|
||||
> Level 1 hides everything in a category (say, “staged” files); Level 2 expands to show just the filenames in a category (this is the default); Level 3 will show the git hunk headers; and Level 4 will show all the diff hunks. I use Levels 2 and 4 the most, but if you’re using TAB Magit will pretty much “do what you want.”
|
||||
> n and p will move between the next and previous section (such as a hunk); M-n and M-p move between sibling sections, such as between each file in level 4, or between each section (like staged or unstaged). You can use + and - to enlarge or shrink each hunk and 0 to reset to the default. You can also type H to refine the hunk for additional diff highlighting. Pressing RET will go to the file where the change is made. It works on both hunks and files.
|
||||
> To stage or unstage you can type s or u to stage/unstage the item
|
||||
> If you use the region to select a portion of a hunk and then press stage/unstage then Magit will automatically stage or unstage just that selected region! That’s extremely useful for fine-grained control when a diff hunk itself is not good enough.
|
||||
k discard hunks and files (revert to HEAD) and delete untracked files from your filesystem
|
||||
**** Commiting
|
||||
c commit menu
|
||||
You can extend (e) the current commit HEAD is pointing to
|
||||
You can amend (a) the commit message
|
||||
You can reword (r) it, if you don’t like the commit message
|
||||
and you can both fixup (f) and squash (s) against the current commit. If you have previously markewd a commit with . this commit will be used instead.
|
||||
> if you forgot to commit some stuff that belongs to the commit you just did – use extend. If you want to amend the commit message as well, use amend.
|
||||
|
||||
**** Log menu
|
||||
j
|
||||
l l short log
|
||||
l h git reflog
|
||||
. will mark the commit for use with commands like commit fixup and commit squash (c f and c s)
|
||||
x will reset your head to the selected commit
|
||||
v will revert the commit
|
||||
d will diff between the selected commit and your working tree
|
||||
a will apply the selected commit’s changes to to your working tree
|
||||
A will cherry pick the commit on top of your working tree
|
||||
E will interactively rebase from HEAD to the selected commit. Very useful if you want to rewrite history
|
||||
C-w will copy the commit hash to the kill ring
|
||||
SPC will show the full commit message
|
||||
> the mark command will persist even if you close the log window. It’s a powerful tool but it’s easy to forget you’ve marked something.
|
||||
> If you navigate up/down the log with M-n and M-p magit will automatically show the commit in a separate window.
|
||||
* IDEA How to turn IDEA into a recognized keyword?
|
||||
^^^ like this; also it can be done globally, that's a choice to be made.
|
||||
|
||||
* Install from source
|
||||
[[https://mirrors.kernel.org/gnu/emacs/][download]]
|
||||
wget https://mirrors.kernel.org/gnu/emacs/emacs-26.1.tar.xz{,.sig}
|
||||
gpg --recv-key D405AA2C862C54F17EEE6BE0E8BCD7866AFCF978
|
||||
gpg --verify emacs-26.1.tar.xz.sig
|
||||
Primary key fingerprint: 28D3 BED8 51FD F3AB 57FE F93C 2335 87A4 7C20 7910
|
||||
Subkey fingerprint: D405 AA2C 862C 54F1 7EEE 6BE0 E8BC D786 6AFC F978
|
||||
tar xf emacs-26.1.tar.xz
|
||||
cd emacs-26.1/ # version may differ ofc
|
||||
./autogen.sh
|
||||
./configure --with-jpeg=no --with-gif=no --with-tiff=no --with-gnutls=no
|
||||
# or install: libjpeg libgif/libungif libtiff gnutls
|
||||
make
|
||||
|
Loading…
x
Reference in New Issue
Block a user