[HN Gopher] Magit 3.0 ___________________________________________________________________ Magit 3.0 Author : mpsq Score : 298 points Date : 2021-05-25 09:17 UTC (13 hours ago) (HTM) web link (emacsair.me) (TXT) w3m dump (emacsair.me) | the_duke wrote: | Emacs is too laggy for me as my main editor. | | But Magit is so good that I start emacs up just to use it as my | Git interface if I can't get by just with the CLI. | | Sadly there is no Vim plugin that is competitive. There is | vimagit [1], but it's not on par. | | [1] https://github.com/jreybert/vimagit | MobileVet wrote: | Have you tried Spacemacs w/ VIM bindings (evil mode)? | unhammer wrote: | Tried native-comp? | https://news.ycombinator.com/item?id=24117853 | dhess wrote: | I have, on macOS, and somehow, it has _much much worse_ lag | than Mitsuharu Yamamoto 's Emacs "Mac port," [1] which is | still based on Emacs 27.2. The native comp version was so | slow that I gave up and switched back to Mitsuharu's port, | which is snappy enough for my needs even without the native | compilation bits. | | From what I gather, mainline Emacs was adversely impacted by | changes in Mojave. [2][3] The end result, for me, is that any | gains in the native compilation are swamped by the macOS | issues. I'm hoping that Mistuharu rebases his work on the | native-comp Emacs soon, so that I can get the best of both. | | [1] https://bitbucket.org/mituharu/emacs-mac/src/master/ | | [2] https://www.reddit.com/r/emacs/comments/faz1fm/seeing_a_f | las... | | [3] https://emacs.stackexchange.com/questions/59966/is-it- | possib... | AlexCoventry wrote: | Emacs 28 is much faster for me, on ubuntu, FWIW. | michaelcampbell wrote: | Where are you getting 28? | https://mirrors.ocf.berkeley.edu/gnu/emacs/ only shows up | to 27. | nvarsj wrote: | 28 is the current master of Emacs. So you have to compile | from source. | ashton314 wrote: | > Too laggy | | What's your setup like? I've experienced some lagging from time | to time--almost always because I turned on some package I | didn't need. My thirst for responsiveness has won out and now | it's nice and snappy. | | I'm personally not running the native-comp branch, but I hear | lots of people say it's a game changer. Native-comp recently | got merged to master, so when Emacs 28 ships it should be | available to everyone! | TacticalCoder wrote: | I upvoted you but... How comes Emacs is laggy for you? I'm | running a beefy Emacs setup and it is really responsive. If | anything Emacs in the nineties was "Eight Megabytes And | Constantly Swapping" but... We're in 2021 now and now it's | still 8 MB, so it's a rounding error (I'm only exaggerating a | bit). | | It's one my lightest app: starting Emacs, eval'ing some elisp, | and exiting takes... 81 ms. Eighty-one milliseconds. To start | an entire Emacs instance from scratch (no "daemon" trickery: a | real full Emacs instance), eval'ing "kill emacs" (ok, a small | program if any bu still) and exiting. | | I don't know which editor, in this day and age, can start and | exit in 81 ms (besides vim and nano)? | | Launching my full setup takes 1.1s: thousands of lines of elisp | configuration. | | I'm running the native-comp branch since six months (?): | compilation of Emacs itself is a bit of a pain but running it | is very smooth. | | That's on a 6 or 7 years old Core i7 6700K / 16 GB of RAM. | Hardly a speed demon (besides the NVMe M.2 PCIe 3.0 x4 SSD). | | Configuration, IIRC, has got a few "tricks" to prevent the | usual culprits from slowing Emacs: something to do probably | with font-locking on very long lines (?) when I open such a | file etc. | | But it's overall more than snappy. I use ivy/avy/swiper and | burntsushi's rigpgrep integrated into Emacs. Everything is not | just fast but really fast. | | I cannot even imagine on a modern machine like some AMD 5900X | or Apple M1... | mtalantikite wrote: | I was a longtime Emacs user (and vim before that) and | recently a project I was working on was far too laggy for me | to actually work productively on in Emacs. It was largely due | to me using various LSPs within Emacs -- the frontend was in | TypeScript and the backend in Go, and inevitably things would | grind to a halt on a 5 year old i7 MBP with 16GB of RAM. | | Switched over to VSCode with as many extensions as I could | find to get me close to my Emacs setup (including edamagit) | and it, to my surprise, was actually very productive. I've | been using VSCode now for 6 months and 15 year old me in the | 90s is very mad at current me for selling out. | wiredfool wrote: | LSPs and Large JSX file highlighting seem slow to me. | da39a3ee wrote: | I have the exact same story. Multiple LSPs in emacs was too | hard to manage and seeing as some of it was typescript, | much worse than the VSCode experience. Edamagit has made a | very good start at emulating magit in VSCode. Still use | emacs for magit though. | the-smug-one wrote: | It's probably too late for you :), but I use native-comp | Emacs and it's blazing fast. At least lsp-mode+gopls is. | I haven't gotten the chance to use this setup with | Typescript's LS, but I've used gopls+clangd without slow | downs. | | Also, dang I miss coding in TS instead of Go. | natrys wrote: | I have the same experience. Being on master and | nativecomp probably helps, and I also think eglot is tad | smoother than lsp-mode. I am using 10 year old laptop, no | friction at all with tsserver, elixir-ls or gopls. | However I think the server itself is the biggest | difference maker, because all hell breaks lose when I try | dart/flutter even in a simple project. But to be fair, my | neovim setup struggles with that too (nvim-lspconfig + | nvim-compe). | tngranados wrote: | I think it's a Mac and an HDPI thing. I had to stop using | emacs because it was too slow on my work MacBook Pro | connected to a 4K screen. Scrolling was painful and only | marginally better with nativecomp. | b3morales wrote: | If you are interested in continuing to use emacs, I'd | suggest using the profiler to investigate. There's a good | demo/depiction of doing that here: | https://www.murilopereira.com/how-to-open-a-file-in-emacs/ | (posted recently to HN). I think it's most likely to be | something pretty specific/small in the config you're using. | | I am using emacs on a Mac, often with a 4K screen, and | generally have no problems. I did have a scrolling lag | issue a few months ago, but it was because of a bit of code | that I had added to my modeline that was doing way too much | work every time something changed in the buffer. The | profiler pointed me right to it. | darthrupert wrote: | Perhaps this is about MacOS vs Linux. I'm also suffering from | slow emacs on mac, and no combination of flags seems to help. | | Use case: open a yaml file with syntax highlightning, scroll | it with the mouse. The latency should be as low as possible. | nvarsj wrote: | It's most likely a Mac thing. And is probably the main | reason I gave up on OS X as a serious work OS, since I'm so | dependent on Emacs (org-mode in particular). I hope it gets | sorted one day. Apparently it has to do with certain system | calls on OS X just being very slow. | ryukafalz wrote: | This is my experience as well. I know it can be fast | because emacs absolutely screams on my Linux machines, but | it's super sluggish on the Mac I have to use for work. | dpbriggs wrote: | Emacs on MacOS was also laggy for me before I started using | the native comp feature. It takes a while to compile but | it's seriously one of the best QoL changes I've had in | years. | chalst wrote: | I have a very underpowered Macos machine (2010 Mac mini) | which faces latency problems with most things. Except | Emacs. E.g., Eshell is much snappier for issuing shell | commands than bash on iTerm2. | taeric wrote: | Fwiw, I'm not seeing lag on my end doing the same. Can turn | on magit blame and it still scrolls fine. :( | | Opening a very large file? | | Edit: I have found that if I don't reboot my Mac, the | environment that a launcher emacs finds is sometimes off. | Is it the same slow if you launch from a terminal versus | the dock? | darthrupert wrote: | No, not very large. | | I'm using Doom with pretty much default settings. Perhaps | there's something heavy there. | taeric wrote: | I don't think anyone really wants to profile their | editor. That said, if you have the cycles to spare, M-x | profiler-start, scroll, M-x profiler-stop may have some | obvious culprit. | weavie wrote: | I've recently had to dump Emacs for Vim. I found with using | Rust Analyzer on Emacs, it would regularly lock up for a | number of seconds. With Vim (NeoVim anyway) this does not | occur. | Tehchops wrote: | I'm using the Emacs Mac port on a modern(2019-era) MBP and it | absolutely crawls when working on a large, multi-file | Terraform code base. | Decabytes wrote: | Same. I have to work with large separated value files and | it can get Emacs chugging on my Mac Book. Also any file | large file that has any sort of highlighting (I.E a large | xml file) can be difficult to work with. | | I'm hoping that GCC emacs will resolve some of these | issues. A better Elisp backend will do so much for Emacs | and all of it's modes. I think one of Guilemacs goals was | to have a better elisp interpreter but I'm not sure they | will ever be able to keep up with all the development that | has been happening on Emacs | Tehchops wrote: | Yea, it's quite unfortunate. Magit and Org-mode are | killer, and don't really have 1:1 equivalents anywhere | else. | throwawayboise wrote: | Emacs is still (AFAIK) entirely single-threaded. If you are | performing some operation that blocks (e.g. a network call, a | shell command such as "git clone") all other windows are | blocked until that completes. | | I would guess if you have something like FlyMake configured | for on-the-fly syntax checking, you could also get a "laggy" | feeling. | | Just launching and using a vanilla emacs session feels quite | snappy in my experience. | d0mine wrote: | you don't need multiple threads to run things concurrently | (such as network I/O, communicating with subprocesses) | e.g., I believe url-retrieve in emacs doesn't stop the | world (because there is -synchroniously version too). async | is a thing | spamizbad wrote: | Likely an OSX user. Emacs on my 2018 MBP is noticeably slower | than my 2016 Dell XPS running Linux - despite the MBP having | more ram, more clocks, and more cores. | jpeloquin wrote: | > How comes Emacs is laggy for you? | | I use emacs as my main editor, but as with all software it's | easy to accidentally create situations where it gets laggy, | regardless of hardware. Two that I've hit over the past 10 | years: (1) On Windows only, movement of point in buffers with | non-ascii characters lagged when said characters were visible | due to frequent gc pauses. Was fixed by making emacs wait | longer to do gc, and only when idle. (2) A theme that styled | text with a box around it (customize-face) made buffer | redisplay laggy. Not sure why; just turned it off. | ragnese wrote: | I know that these "works for me" discussion are often not | fruitful. But, I'll ask this: have you done a several hour | session of typing/programming into a JetBrains IDE? I'm | claiming that on my work Macbook Pro, even just typing plain | text into a file and scrolling lines in IDEA is smoother and | more responsive than doing the same in Emacs. | | I use the Vim plugin for IDEA and evil mode in Emacs. Even | things like holding 'j' or 'k' to scroll lines is painful in | Emacs compared to IDEA. | | I'll admit that if I spend some hours/days in Emacs, I stop | noticing it much, so it isn't THAT egregious. But if I switch | back and forth, it really sucks. | michaelcampbell wrote: | Is it possible that your vi plugin is introducing some lag? | mumblemumble wrote: | It's really hard to tell. The configurability of emacs is | both a blessing and a curse. Since you can customize | basically anything, there are all sorts of opportunities | for funky config or a weird extension to slow things down. | | I know, for example, that a lot of people who have tried | both report that Doom Emacs is much faster than Spacemacs. | That implies to me that it's not evil mode. For my part | (fairly vanilla Doom setup), I find holding j/k to scroll | in Doom is snappier than IntelliJ, on the same computer. | | But then, I've also heard people complain that it's just | the opposite on Windows, where Doom emacs is apparently | just _really_ laggy. | | That said, I agree that the "works for me" discussions | aren't very fruitful, and I'm definitely not here to tell | you which editor to use. More observing that, what with | how... emacsy... emacs is, you're definitely not alone. | It's entirely possible that the problem you had is both | something specific to how you had things set up, and also | absolutely not at all your fault. | metroholografix wrote: | Something is definitely wrong with your configuration (in a | wide sense, not necessarily restricted to just the editor). | | Emacs is at least an order of magnitude more responsive | than IDEA (or any other JetBrains IDE). Start with a stock | Emacs, no extra third party packages loaded, to get a sense | of performance. There is a lot of great Emacs Lisp code out | there, but the opposite is also true: Horrible code written | by folks new to Emacs and Emacs Lisp, that can slow down | Emacs a lot and contribute to a degraded experience. Which | is why I recommend starting from scratch and incrementally | adding third party code/configuration (ideally, | understanding the code as you go along and avoiding | packages with lots of dependencies). | gpderetta wrote: | Personally, I find that normally emacs latency is more | than tolerable. But LSP is pretty bad, at least with | clang-lsp, especially on a fairly loaded machine. I have | yet to try the jit branch though. | creese wrote: | If you're using HJKL to navigate more than a few lines, | you're doing it wrong. Use 'search' instead. | | https://www.gnu.org/software/emacs/manual/html_node/emacs/I | n... | agumonkey wrote: | > Emacs is too laggy for me as my main editor. | | wonder what kind of projects do you use | iib wrote: | Can you try `lsp-doctor` and try to resolve any performance | hints it outputs? The latest `lsp-doctor` seems to also know | about the native compiler, so one less thing to worry about | when checking. | Steltek wrote: | Likewise with VSCode, Edamagit is very close but isn't "muscle | memory" close. I run into things that aren't quite the same as | the original: choosing a remote on a new repository when | pushing or selecting switches using the VSCode native pop-up. | | I really want Edamagit to work. I'm still getting my feet wet | with VSCode but Git integration is a bit of a pain. | ragnese wrote: | Yeah. I still use Emacs for actual development sometimes, but | it's been less and less, honestly. But it isn't going anywhere | as my git porcelain. I used to scoff at even the _concept_ of a | git porcelain- I never used my IDEs ' tools to do git ops | because I thought they were weird, leaky abstractions, and that | you just have to learn "real" git anyway. But Magit doesn't | hide git from you- it's just a really nice, interactive, | interface over git. | | Even better when you can actually hop into conflicted files and | use smerge and language-specific tooling (LSP) to do "real IDE" | stuff. | xvilka wrote: | They could have solved this with porting from single-threaded | Emacs Lisp to Guile[1] or a proper Common Lisp[2]. Sadly, both | initiatives didn't get enough steam. Someone, though, started | to rewrite Climacs in SBCL from scratch[3]. | | [1] https://www.emacswiki.org/emacs/GuileEmacs | | [2] https://www.cliki.net/cl-emacs | | [3] https://github.com/robert-strandh/Second-Climacs | ragnese wrote: | I'm not convinced that Elisp-the-language is really the | limiting factor. I'm not an expert on the details- just a | passive observer for several years. But, IIRC, Elisp recently | got some kind of cooperative async stuff. Even before that, | my understanding was that there are a lot of legacy | architecture issues with Emacs, from its GUI model to the | actual text data structures, that contribute to to | latency/slowness. | | I think a full rewrite in _any_ language would have likely | brought about a better UI experience. | lawn wrote: | I agree. At work we use Windows and all the dev tools are | integrated to Emacs (and Emacs alone). And magit is just | _incredibly_ slow. | TeMPOraL wrote: | I had some performance issues with Magit (and git in general) | under Windows, but ultimately resolved them. I documented the | solutions here: | https://news.ycombinator.com/item?id=26736006. Maybe some of | it will work for your case. | rjzzleep wrote: | I find magit cool, but I always find myself going back to using | tig or !tig (combined with git add -p for interactive adding) | inside of vim. It's a lot faster of all the editor extensions | for me. | | [1] https://jonas.github.io/tig/ | iudqnolq wrote: | I agree. | | I've been considering trying to replicate magit in a tui. I'm | not sure if I should go for a straight port (many people might | find useful, eventually) or change lots of things to make it | fit my workflow (might be more likely to "finish" if I | optimized for me). | | My dream git workflow is rebase-first, i.e. you have multiple | WIP commits at any given time, and can send an unstaged hunk to | any of them with the same level of complexity. | sreevisakh wrote: | Interesting! Is that workflow similar to what Quilt [1] or | Stacked Git [2] is used for? And how do you achieve that now? | | [1] https://savannah.nongnu.org/projects/quilt [2] | https://stacked-git.github.io/ | iudqnolq wrote: | Those look interesting. If I understand them right they've | for mailinglist-based dev where you email patches around? | | I prefer a model where you use a forge for collaboration, | and don't rewrite shared history. However, you use rebase | extensively locally. | | Right now I use magit with fixup. It's just more | keystrokes. I want to be able to highlight a change to the | workdir, hit a key and select a local commit (right now | it's highlight, hit the fixup shortcut, select the commit, | open a rebase at the appropriate early commit, complete the | rebase). I also want to be able to partially stage a newly | created file (right now it's cut and paste part of it into | a temp file) | | I just discovered today that intellij has the concept of | named changesets (i.e multiple staging areas, and you | select 1+ to commit). I like it, but I don't think you can | check them out and they don't work with external git | commands. My temp commits would just be regular commits | prefixes with "wip: " | [deleted] | karl42 wrote: | I'm really happy with fugitive[1] for vim. Can anyone compare | those two well enough, so that I understand what I am missing? | | [1]: https://github.com/tpope/vim-fugitive | poidos wrote: | Congratulations to Jonas and the whole team! Magit is a joy to | use and has made me feel supremely comfortable with advanced git | work. | globular-toast wrote: | Not to detract from Jonas's efforts in the slightest, but the | original author, Marius Vollmer, deserves a lot of credit for | coming up with the UI for magit. There weren't any other emacs | packages quite like it at the time. | nonbirithm wrote: | I wish Git would have some kind of command-server mode or libgit2 | was supported with Magit to prevent needing to create new | processes on Windows. Magit sometimes creates dozens of Git | processes for a single operation, but because process creation is | much slower on Windows than Linux, it makes Magit unusable for me | on those systems. (Sadly, I don't always get a choice to just use | Linux.) Simple things like magit-status take 10 seconds per | refresh/stage/unstage instead of half a second elsewhere. It got | to the point where using the git command line was much more | bearable, but way more error-prone, and I miss Magit every time. | | https://magit.vc/manual/magit/Microsoft-Windows-Performance.... | | https://github.com/magit/magit/issues/2959 | dan-robertson wrote: | Magit already has some basic support for libgit. Browsing the | issues I get the impression that if someone made a reasonable | pull request to support libgit2 for a few dozen methods (should | be easy to prioritise based on profiling) then it would be | accepted. I don't think the maintainer wants to review pull | requests for one function at a time. I think one issue is | perhaps that windows performance isn't a particularly high | priority and changes may not be accepted if they degrade Linux | performance. | | Aside: isn't process creation more reasonable with WSL? Or can | you not easily use it? | jackewiehose wrote: | > isn't process creation more reasonable with WSL? | | In my experience WSL is overall much slower than cygwin. | jackewiehose wrote: | I also can't use magit because of this. I thought the poor | performance came mostly from my big repository with lots of | binary files but now I 'git-filter-repo'ed the .git-directory | from 2-3 GB (packed) down to 150 MB and magit is still no fun | at all (although better than before). | mekster wrote: | How does the interface compare to SourceTree? | globular-toast wrote: | It's in a different league. Hard to explain to a non-emacs | user, though. Which is a tragedy because I'd love to explain, | but some things just have to experienced. | tcoff91 wrote: | Magit is like using the terminal client but easier. You have to | press fewer keys to do things, and it makes the various | operations discoverable through menus. It's really the best way | to interact with git IMO. However, if you don't use Emacs | already it's a little much to setup Emacs just to use Magit. | | SourceTree is terrible IMO. I've had to help so many coworkers | (who don't want to learn proper terminal git) unfuck their | local repos after SourceTree did god knows what to it. Other | git GUIs like Fork or Git Tower never caused these same issues | in my experience. If you are currently using SourceTree I would | recommend trying this instead: https://git-fork.com/ | dreamcompiler wrote: | Magit is designed for people who are already used to the git | command line. Sourcetree is not. | | Sourcetree is mouse-oriented, and to me it has the same | disadvantages as all git GUI clients: I'm never quite sure what | it's doing behind the scenes, and it cannot quite do everything | useful that command line git can do. | | Magit is keyboard-centric like emacs. Yes, so is the command | line but Magit relies on individual keystrokes rather than | typing in a line of commands and hitting <return>. The result | is that once you get used to Magit you can _fly_ through git | operations and it 's almost always quite clear what git | operations Magit is doing. There are still a few exotic command | line git operations Magit won't do but I almost never need | them. | bm3719 wrote: | Magit is definitely one of the best addons for Emacs. | | Nice to see Forge getting some attention. One less reason to ever | leave Emacs is always welcome. | bgorman wrote: | When I switched to emacs, I thought org-mode and repl integration | would be the killer features. I was wrong- Magit is best emacs | feature by far. | | It's great that parts of the magit experience have been separated | into packages. Perhaps now mercurial, perforce etc can get | clients similar to magit in quality. | globular-toast wrote: | I love git but every time I have to use the cli instead of magit | I cry a little. | omaranto wrote: | When do you have to use git rather than magit? | globular-toast wrote: | Mostly helping others fix their mistakes on their machine. | omaranto wrote: | Makes sense. I'm lucky no one asks me git questions: the | few friends I have that use git know it much better than I | do; most of my friends and all of my family don't use git | at all. | ta988 wrote: | Magit is really one of the best git interface there is. I'm often | coming back to it. | chewxy wrote: | I ran `magit-version` and I got Magit 20201225.4, which I assume | is the 2020 Christmas edition of Magit. Did they suddenly switch | to semver? | 2pEXgD0fZ5cF wrote: | You are probably using melpa instead of melpa stable (like | most, I assume). In melpa, all packages use the yyyymmdd.x type | of versioning. In melpa stable packages use semver. | | Have a look: | | https://melpa.org/#/magit | | https://stable.melpa.org/#/magit | cstml wrote: | Fantastic. | aryamaan wrote: | I never fail to see so many high things about Magit and I believe | they are rightly placed. | | I am a non Emac user and wonder why no one tries to bring | something similar client for non Emac population. | MobileVet wrote: | It really is fantastic... and for the non-Emacs folks like | myself you can run it in Spacemacs w/ VIM bindings (aka evil | mode). | jidiculous wrote: | there's an effort to replicate Magit in VS Code: | https://marketplace.visualstudio.com/items?itemName=kahole.m... | trentontri wrote: | when can we stop renaming 'master'? it's a pointless update. | mumblemumble wrote: | I'm not sure you understood this change? | | This Magit update is not renaming branches or telling you what | branch name to use. Quite the opposite. It's a switch from | assuming everyone uses only one of the many conventions out | there, to having out-of-the-box support for all the major ones. | amackera wrote: | Magit hits the sweet spot between flexible and easy that makes it | an actually useful git editor integration. You still need to know | git to use it, though! | NeutralForest wrote: | Magit is one of the best piece of software for Emacs! Good stuff | =) | jhvkjhk wrote: | I heard lots of praise to Magit. Is there a way to use it like a | standalone git client? Like tig, lazygit, etc. | ashton314 wrote: | You could just alias this in your shell: | alias magit='emacs -nw --eval "(magit-status)"' | jhvkjhk wrote: | Thanks, that's exactly what I want. | iib wrote: | I was reading the thread and replied to a very similar | situation. The only addition was that if you want only a | magit interface, it makes no sense to load the rest of your | emacs config, so you could add a special magit initialization | file, and just add -Q --load magit-init.el | dmm wrote: | Sure, just open the git repo in a magit. I do it almost every | day. | codemonkey-zeta wrote: | Did you mean "open the git repo in a magit buffer"? Because | then I'd agree. | | To address GP comment, you can just install vanilla emacs, | then install magit, and just use that as your "standalone" | app. | globular-toast wrote: | Honestly, you'd only get a fraction of the power of magit doing | it that way. It's power is due to it being thoroughly | integrated into the environment you use for editing all kinds | of text every single day. Imagine being able to control git | using the same commands your used to in whatever text editor | you use. | CJefferson wrote: | I would strongly recommend first doing some emacs tutorials -- | you don't have to start using emacs as your editor, but (in my | opinion) magit does assume you have some understanding of how | emacs works. | divs1210 wrote: | Magit must be one of the best software tools ever written. | | I sorely missed it when I had to use IntelliJ for a few projects, | so I wrote a TUI tool like Magit that can be used inside the | console window of most IDEs like IntelliJ etc. | | Still haven't gotten around to releasing it properly, but it's | easy to setup and works well enough to be a working MVP. | | https://github.com/hugit-project/hugit | iib wrote: | Would the need for a pure terminal magit be resolved by the | fact that Emacs can run in the terminal? [1] seems to have a | solution to obtain a fast starting subset of Emacs and start | into magit-status directly. emacs -Q -nw | --load magit-init.el --eval '(progn (magit-status) (delete- | other-windows)' | | Would this work in IDE consoles? | | [1] https://www.wisdomandwonder.com/article/10787/emacsorg- | mode-... | [deleted] | codychan wrote: | You haven't touched its core code for two years, what happened? | Gave it up? | medstrom wrote: | He/she's no longer using IntelliJ. | tephra wrote: | I usually always have Emacs up and even if I'm in vscode or | intellij I use magit in Emacs for all got things. | dang wrote: | Some past related threads: | | _Magit - A Git Porcelain inside Emacs_ - | https://news.ycombinator.com/item?id=24431216 - Sept 2020 (83 | comments) | | _A walk through the Magit interface_ - | https://news.ycombinator.com/item?id=21729597 - Dec 2019 (81 | comments) | | _Magit 2.13 released_ - | https://news.ycombinator.com/item?id=17220630 - June 2018 (49 | comments) | | _Show HN: Magit, the magical Git interface_ - | https://news.ycombinator.com/item?id=15358723 - Sept 2017 (5 | comments) | | _Magit Kickstarter fully funded_ - | https://news.ycombinator.com/item?id=15312288 - Sept 2017 (71 | comments) | | _Emacs and Magit_ - | https://news.ycombinator.com/item?id=14819256 - July 2017 (174 | comments) | | _Magit: a Git porcelain inside emacs_ - | https://news.ycombinator.com/item?id=10643977 - Nov 2015 (14 | comments) | | _What 's new in Magit 2.x_ - | https://news.ycombinator.com/item?id=9936095 - July 2015 (23 | comments) | | _Using Emacs and Git with Magit 2.1_ - | https://news.ycombinator.com/item?id=9873237 - July 2015 (29 | comments) | | _Meet Magit - Git Mode for Emacs_ - | https://news.ycombinator.com/item?id=2543265 - May 2011 (4 | comments) | zelphirkalt wrote: | Looking forward to using the new release. "git at the speed of | thought" describes magit quite well. Actually sometimes magit | nudged me into the direction of looking up some more special git | commands, to learn about them and then making use of magit's | interface to them, often simply pressing one button more. Magit | has not made me forget how command line git works, because it | often shows me right there, what the arguments are I am | specifying by a few key presses actually are. If it made me | forget how to use actual git, I would be thinking: "Meh, but I | should know how to use git actually, for the times when I do not | have magit around." Fortunately this is not the case at all with | magit. | Steltek wrote: | Magit has a great mix of direct manipulation of git primitives | and good visualization. I think I've learned how git works | faster through Magit than I would have from using the CLI. It's | really hit a sweet spot for me. | lambdaba wrote: | This is what I'd want from any GUI, ability to "view source" | and then use in scripting etc. | TeMPOraL wrote: | I'm sure you know this, but for the benefit of other | readers, pressing '$' in Magit status buffer (and likely | bunch of others) pops up a buffer that lists actual | commands issued to Git, so you can always check how Magit | interaction maps to Git CLI commands. | neves wrote: | Nice. I think the same about the GUI gitExtensions. | | I'll give it a try | willtim wrote: | > "git at the speed of thought" describes magit quite well. | | Not under Windows, unfortunately. | Decabytes wrote: | Magit is incredible and Emacs is my main Editor. Reading the post | a couple days ago on text selection and how hard it is to get | right makes me even more in awe of what a text editor does | aidenn0 wrote: | I haven't tried very hard yet, but magic has been fairly | unintuitive for me. Perhaps it's just that I've been using git | for so long. | | There have been several times that I tried something with magit, | and messed things up enough that I just dropped into a shell and | did everything with the git command line | b0afc375b5 wrote: | Hang in there. I was a beginner at magit (and emacs, to boot) | and had to keep at it for a few weeks before it became | intuitive for me. I also had to google how to push and fetch | and revert every time, because I would keep forgetting it. And | emacs keybindings was weird to me at the time, since I was used | to vim keybindings. | | Just practice, practice, practice. I can attest that the | benefits are worth your while (if you use git daily, at least). | pmoriarty wrote: | Do you remember what you tried? | | Yours has been literally the first negative comment out of | hundreds of comments I've read about magit. It'd be interesting | to learn what didn't work for you and why. | warp wrote: | My experience is the same. Probably because I'm so used to | git on the command-line already magit doesn't seem much | benefit. | | I just gave it a try: | | magit-blame seems hard to read, I guess it's a limitation of | emacs, or can it be configured to show the author name on the | left of the line like CLI git blame? | | I tried to find the equivalent of "git add --patch", but did | not find it in the info manual. | jorams wrote: | > magit-blame seems hard to read, I guess it's a limitation | of emacs, or can it be configured to show the author name | on the left of the line like CLI git blame? | | There are different styles available. While blaming a file, | press B to open the popup, then c to cycle through them. | | > I tried to find the equivalent of "git add --patch", but | did not find it in the info manual. | | That's just the entire staging workflow. You see a list of | changed files, which you can stage per file. Or you can | expand a file to its changed chunks using TAB, then stage | chunk by chunk. Or you can select some lines in the chunk | and stage only those. | aidenn0 wrote: | The first odd thing is that magit runs in emacs' working | directory, rather than the directory of the buffer you launch | it in (my experience with most emacs commands is that they | will take the cwd from the buffer). I'm going to have | multiple git repos, and I usually only start emacs once, so | this gets me almost every single time. | | The submenus are also a bit overwhelming. I just wanted to | stash my working tree, not be given dozens of options for how | to stash! Emacs already has a way to signal that you want to | give an option to a command, so this interface feels very un- | emacsy. "M-x magit-stash" should just do the common thing | imo. C-u M-- prefix if I want something fancy. | | Another time, I fat-fingered a branching operation, and I | spent a good five minutes trying to figure out how to fix it | within magit, and then gave up and solved it in 30s from the | cli | coryrc wrote: | Magit always opens to the buffer's repo IME. I use dozens | of repos simultaneously so I experience it daily. | | EDIT: okay dozens overall, < dozen simultaneous | CJefferson wrote: | I didn't like it, I have several friends who tried it and | didn't like it. The main problem (for us) was that people | said "Hey, this is so great you should use it even if you | don't use emacs". | | This is (in my opinion) terrible advice, as you need to be a | fairly competent emacs users to use magit, else you will keep | hitting weird situations you can unable to escape (as you | don't know the emacs thing to do). | aidenn0 wrote: | I use emacs and still struggled with it. The interface is | not particularly emacsy. | drunkpotato wrote: | Cherry pick is faster and easier for me in the CLI. I've read | Magit's documentation on Cherry pick dozens of times and I | still have no idea what it's doing. I think I have | successfully done it in magit once, but now I don't bother | and just do it on the command line. | | For everything else I absolutely love magit. The ability to | stage and commit chunks in a visual fashion is an unbeatable | killer feature! | SirensOfTitan wrote: | I do cherry picks in magit by: | | 1. Check out target branch | | 2. l o (log other) source branch | | 3. Highlight commits from list you want to cherry pick. | | 4. A A to apply the pick (I typically throw a -x flag into | there too) | drunkpotato wrote: | Thank you! That workflow makes sense. We'll see if I | remember that next time I Cherry-pick. | anyonecancode wrote: | I've had the same experience. I've been using org-mode as my | primary note-taking tool for several months now and am getting | more comfortable with emacs as a result, but while I can see | the appeal of magit, the "spend time learning how emacs git" vs | "use the CLI to do what I want in 3 s" hasn't balanced out yet | in magit's favor. At some point I'll probably sit down and take | like a half day or so to actually learn magit, but git CLI | isn't really broken for me so the drive to learn an alternative | git tool hasn't been all that strong. Still, magit seems nice, | so one of these days I'll probably make the effort. | the-smug-one wrote: | How often do you guys do really crazy stuff with git? I do | some rebasing (interactively and not) and some cherry | picking, very rarely do I touch reflog (in which case I do | use the CLI). | | What kind of race car stuff does git CLI offer that makes you | have to go through weird contortions in magit :)? | anyonecancode wrote: | Well to use magit, first it's "ah, how do I open magit | again?" Then it's "crap, now my org-mode buffer has been | replaced by magit when I really wanted it in a separate tab | but forgot to do the right key combo for that", then 5 | minutes of googling "how to go back to previous screen in | emacs doom", then remembering it's called a "buffer" That | kind of stuff. I still get thrown off a surprising number | of time by fat-fingering something and my emacs doing | something surprising that I don't understand and am not | sure what keys I touched to make it do that, and being | unable to go back easily. | | So it's really 100% on me for not being an emacs native | rather than any shortcoming of magit per se, and as I said | at some point I'll probably invest the time, but I | _already_ have muscle memory for working in my terminal. | chriswarbo wrote: | > I just dropped into a shell and did everything with the git | command line | | Note that you can run raw git commands by pressing : in any | magit buffer. It opens a commandline prepopulated with `git `, | so you can type whatever you want afterwards. The output will | appear in the relevant `magit-process` buffer. | | (The choice of : is analogous to M-: which will execute an | Emacs Lisp expression) | olau wrote: | Magit is not terribly intuitive. | | It looks a bit like a menu-based GUI, so you'd expect to | navigate around and use a standard set of keys, but most of it | is actually powered by special key combinations. | | Now, in some circumstances, that works fine, but honestly the | interface could be simplified a bit and probably made faster to | use. And less prone to the "oh shit, I thought I was typing | something but now I actually hit 3 different Magit key | combinations and have no clue what just happened". | | Personally, I'm hoping someone takes the standard VC thing in | Emacs and adds some of the Magit features to that. But | meanwhile, I'm using Magit. :) | nvarsj wrote: | There's definitely some aspects of it which I struggle with. | Like cherry picking a commit always feels somewhat painful, | and I can never remember offhand the exact menus and keys to | press to do it. But for day to day development, it's fast and | great. I love having the separation between the push branch | and merge branches for example, which feels very natural in a | PR workflow. And the forge integration is brilliant. | tcoff91 wrote: | Cherry-picking is amazing with magit. I use spacemacs so my | magit has evil style keybindings. | | I just open up a log view to the branch i'm cherry-picking | from, move the cursor to the commit I want to pick, then if | I don't remember what the key is I just press ? and it | shows me all the commands, then I press A for cherry- | picking, and it immediately populates it with the commit | that my cursor is on in the log view. Easy-peasy. | nvarsj wrote: | I think it's having to go into a log view that bugs me. I | just want to press one button for cherry pick, point it | to a ref and be done. It might be possible but I haven't | figured out how yet. | johndoe42377 wrote: | This is a bloatware inside Emacs, while it should be a thin | wrapper and a few modes. | | The whole point is to reuse Emacs APIs, not building up piles of | crap with tens of dependencies. | | Enterprise software for Emacs lmao ___________________________________________________________________ (page generated 2021-05-25 23:01 UTC)