Difference between revisions of "Git"
(a page for Git, not only magit) |
(add category) |
||
(22 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
− | Packages to interfere with the '''git''' version control system. | + | Packages to interfere with the '''git''' version control system. See also [[github]] and [[gitlab]] pages. |
Line 13: | Line 13: | ||
'''Git-blame''' is a package, available in [[ELPA]], which provides a minor mode for incremental blame. | '''Git-blame''' is a package, available in [[ELPA]], which provides a minor mode for incremental blame. | ||
+ | |||
+ | == Show last commit message for current line == | ||
+ | |||
+ | This package provides a function called '''git-messenger:popup-message''' | ||
+ | that when called will pop-up the last git commit message for the | ||
+ | current line. This uses the git-blame tool internally. | ||
+ | |||
+ | Available in ELPA. | ||
== Highlight uncommited changes == | == Highlight uncommited changes == | ||
+ | |||
+ | === Git gutter === | ||
[https://github.com/syohex/emacs-git-gutter Git-gutter] is an extension to highlight uncommitted changes on the left side of the window, indicating wether a line has been inserted, modified or deleted, and allowing you to jump between and revert them selectively. [https://github.com/dgutov/diff-hl diff-hl] does it too and works with Git, Mercurial, Bazaar and Svn, and it provides similar functionnality for '''dired'''. Both are available in [[ELPA]]. They are [[Tramp]]-aware. | [https://github.com/syohex/emacs-git-gutter Git-gutter] is an extension to highlight uncommitted changes on the left side of the window, indicating wether a line has been inserted, modified or deleted, and allowing you to jump between and revert them selectively. [https://github.com/dgutov/diff-hl diff-hl] does it too and works with Git, Mercurial, Bazaar and Svn, and it provides similar functionnality for '''dired'''. Both are available in [[ELPA]]. They are [[Tramp]]-aware. | ||
Line 23: | Line 33: | ||
(add-hook 'python-mode-hook 'git-gutter-mode) | (add-hook 'python-mode-hook 'git-gutter-mode) | ||
− | === Jump between changes === | + | ==== Jump between changes ==== |
To jump between changes: {{Command|git-gutter:next-hunk}} or {{Command|diff-hl-next-hunk}}. | To jump between changes: {{Command|git-gutter:next-hunk}} or {{Command|diff-hl-next-hunk}}. | ||
+ | |||
+ | [[File:git-gutter.png]] | ||
+ | |||
+ | === Highlight diffs === | ||
+ | |||
+ | [https://github.com/dgutov/diff-hl Diff-hl] goes a little further than git-gutter in that it can highlight the uncommited diffs, even from [[Dired]]. And we can get them on the fly while we type: | ||
+ | |||
+ | (diff-hl-flydiff-mode) | ||
+ | |||
+ | === Browse and stage hunks with Helm === | ||
+ | |||
+ | [https://github.com/torgeir/helm-hunks.el Helm-hunks] allows to jump around git hunks with helm, to preview them on the fly, and to stage them. | ||
+ | |||
+ | == Colorize Dired output depending on the file git status == | ||
+ | |||
+ | See [https://github.com/syohex/emacs-dired-k emacs-dired-k], that does like the [https://github.com/supercrabtree/k k zsh utility]. | ||
+ | |||
+ | [[File:dired-k.png]] | ||
+ | |||
+ | == Commit on every change == | ||
+ | |||
+ | [http://melpa.org/#/git-auto-commit-mode git-auto-commit-mode] (on MELPA) is a minor mode that tries to commit a change to a file after every save. It can also push automatically. | ||
+ | |||
+ | == See previous versions of file == | ||
+ | |||
+ | It's very easy with [https://github.com/pidu/git-timemachine git-timemachine]. Once you have called {{Command|git-timemachine}} you'll have the keys: | ||
+ | |||
+ | * '''p''' Visit previous historic version | ||
+ | * '''n''' Visit next historic version | ||
+ | * '''w''' Copy the abbreviated hash of the current historic version | ||
+ | * '''W''' Copy the full hash of the current historic version | ||
+ | * '''g''' Goto nth revision | ||
+ | * '''q''' Exit the time machine. | ||
+ | |||
+ | = Libraries = | ||
+ | |||
+ | == Git.el: information, predicates and actions on your git repo == | ||
+ | |||
+ | With [https://github.com/rejeep/git.el git.el], we have information about our repo: a list of remotes, of branches, staged files, untracked ones, etc, and also predicates (is there a branch called this ? a tag called that ?), local actions (add, branch etc) and non-local ones (clone, etc). | ||
+ | |||
+ | == Read and write the git config == | ||
+ | |||
+ | See [https://github.com/tonini/gitconfig.el gitconfig.el] to have functions that can read and write the git config file. | ||
+ | |||
+ | = See also = | ||
+ | |||
+ | |||
+ | See also the full list of packages to interact with Github, Gitlab and others in the [[Github]] page. | ||
+ | |||
+ | == Install every package at once == | ||
+ | |||
+ | See a full list and a method to install them all at once on [https://github.com/tarsius/git-elisp tarsiu's github page]. | ||
[[Category:Version Control]][[Category:Convenience]][[Category:Third Party Package]] | [[Category:Version Control]][[Category:Convenience]][[Category:Third Party Package]] | ||
+ | [[Category:Intermediate]] |
Latest revision as of 14:55, 15 May 2017
Packages to interfere with the git version control system. See also github and gitlab pages.
Full interfaces
Magit
Magit is a great Emacs mode for working with Git repositories. It provides a convenient interface for the most common Git operations. Please visit its own Magit page.
Specific use cases
Git blame
Git-blame is a package, available in ELPA, which provides a minor mode for incremental blame.
Show last commit message for current line
This package provides a function called git-messenger:popup-message that when called will pop-up the last git commit message for the current line. This uses the git-blame tool internally.
Available in ELPA.
Highlight uncommited changes
Git gutter
Git-gutter is an extension to highlight uncommitted changes on the left side of the window, indicating wether a line has been inserted, modified or deleted, and allowing you to jump between and revert them selectively. diff-hl does it too and works with Git, Mercurial, Bazaar and Svn, and it provides similar functionnality for dired. Both are available in ELPA. They are Tramp-aware.
After installation, call the minor modes or enable them:
(add-hook 'python-mode-hook 'git-gutter-mode)
Jump between changes
To jump between changes: M-x git-gutter:next-hunk or M-x diff-hl-next-hunk.
Highlight diffs
Diff-hl goes a little further than git-gutter in that it can highlight the uncommited diffs, even from Dired. And we can get them on the fly while we type:
(diff-hl-flydiff-mode)
Browse and stage hunks with Helm
Helm-hunks allows to jump around git hunks with helm, to preview them on the fly, and to stage them.
Colorize Dired output depending on the file git status
See emacs-dired-k, that does like the k zsh utility.
Commit on every change
git-auto-commit-mode (on MELPA) is a minor mode that tries to commit a change to a file after every save. It can also push automatically.
See previous versions of file
It's very easy with git-timemachine. Once you have called M-x git-timemachine you'll have the keys:
- p Visit previous historic version
- n Visit next historic version
- w Copy the abbreviated hash of the current historic version
- W Copy the full hash of the current historic version
- g Goto nth revision
- q Exit the time machine.
Libraries
Git.el: information, predicates and actions on your git repo
With git.el, we have information about our repo: a list of remotes, of branches, staged files, untracked ones, etc, and also predicates (is there a branch called this ? a tag called that ?), local actions (add, branch etc) and non-local ones (clone, etc).
Read and write the git config
See gitconfig.el to have functions that can read and write the git config file.
See also
See also the full list of packages to interact with Github, Gitlab and others in the Github page.
Install every package at once
See a full list and a method to install them all at once on tarsiu's github page.