4/8/2026 at 10:16:39 AM
Jujutsu equivalents, if anyone is curious:What Changes the Most
jj log --no-graph -r 'ancestors(trunk()) & committer_date(after:"1 year ago")' \
-T 'self.diff().files().map(|f| f.path() ++ "\n").join("")' \
| sort | uniq -c | sort -nr | head -20
Who Built This jj log --no-graph -r 'ancestors(trunk()) & ~merges()' \
-T 'self.author().name() ++ "\n"' \
| sort | uniq -c | sort -nr
Where Do Bugs Cluster jj log --no-graph -r 'ancestors(trunk()) & description(regex:"(?i)fix|bug|broken")' \
-T 'self.diff().files().map(|f| f.path() ++ "\n").join("")' \
| sort | uniq -c | sort -nr | head -20
Is This Project Accelerating or Dying jj log --no-graph -r 'ancestors(trunk())' \
-T 'self.committer().timestamp().format("%Y-%m") ++ "\n"' \
| sort | uniq -c
How Often Is the Team Firefighting jj log --no-graph \
-r 'ancestors(trunk()) & committer_date(after:"1 year ago") & description(regex:"(?i)revert|hotfix|emergency|rollback")'
Much more verbose, closer to programming than shell scripting. But less flags to remember.
by pzmarzly
4/8/2026 at 10:23:48 AM
To me, it makes jujutsu look like the Nix of VCSes.Not meaning to offend anyone: Nix is cool, but adds complexity. And as a disclaimer: I used jujutsu for a few months and went back to git. Mostly because git is wired in my fingers, and git is everywhere. Those examples of what jujutsu can do and not git sound nice, but in those few months I never remotely had a need for them, so it felt overkill for me.
by palata
4/8/2026 at 10:59:36 AM
Tbf you wouldn't use/switch to jj for (because of) those kind of commands, and are quite the outlier in the grand list of reasons to use jj. However the option to use the revset language in that manner is a high-ranking reason to use jj in my opinion.The most frequent "complex" command I use is to find commits in my name that are unsigned, and then sign them (this is owing to my workflow with agents that commit on my behalf but I'm not going to give agents my private key!)
jj log -r 'mine() & ~signed()'
# or if yolo mode...
jj sign -r 'mine() & ~signed()'
I hadn't even spared a moment to consider the git equivalent but I would humbly expect it to be quite obtuse.
by Jenk
4/8/2026 at 11:08:13 AM
Actually, signing was one of the annoying parts of jujutsu for me: I sign with a security key, and the way jujutsu handled signing was very painful to me (I know it can be configured and I tried a few different ways, but it felt inherent to how jujutsu handles commits (revisions?)).by palata
4/8/2026 at 11:55:54 AM
The only reasonable way to use signing in jj is with the sign-on-push config https://docs.jj-vcs.dev/latest/config/#automatically-signing... rather than as commits are madeby arccy
4/8/2026 at 12:45:07 PM
Why? I have my signing behavior set to own and I haven't noticed any issues, but I don't actually rely on signatures for much.by Zambyte
4/8/2026 at 3:05:57 PM
If you need to type in a password to unlock your keychain (e.g. default behavior for gpg-agent), then signing commits one at a time constantly is annoying.Does "own" try to sign working copy snapshot commits too? That would greatly increase the number and frequency of signatures.
by singron
4/8/2026 at 4:20:51 PM
Ah, I use my SSH key to sign my commits and I don't have a password on my SSH key.> Does "own" try to sign working copy snapshot commits too?
Yes
by Zambyte
4/8/2026 at 6:40:09 PM
It's the dvorak of git... Maybe more efficient but incompatible with everyone else and a very loud vocal minority.You can find this pattern again and again. How many redditors say 120fps is essential for gaming or absolutely require a mechanical keyboard?
by rjh29
4/8/2026 at 7:04:44 PM
Yeah I think that dvorak is a good example, too.I don't get the mechanical keyboard one, though. I am fine with any keyboard, I just like my mechanical keyboard at home. Just like I am fine with any chair, but ideally I would have a chair I like at home.
120fps I have no experience with, but I would imagine it's closer to video quality. Once you're used to watching everything in 4K, probably it feels frustrating to watch a 1080p video. But when 4K did not exist, it was not a need. I actively try to not get used to 4K because I don't want to "create the need" for it :-).
by palata
4/9/2026 at 10:36:47 AM
> Just like I am fine with any chair, but ideally I would have a chair I like at home.I love my Aeron chair. I've had it for fifteen years and it's still in great shape.
I used to have chronic back pain. Getting good ergonomics at home really put that to bed.
by alsetmusic
4/9/2026 at 8:20:37 AM
> 120fps I have no experience with, but I would imagine it's closer to video quality. Once you're used to watching everything in 4K, probably it feels frustrating to watch a 1080p video. But when 4K did not exist, it was not a need. I actively try to not get used to 4K because I don't want to "create the need" for it :-).I suggest not worrying too much about that - been using a big 4K TV with lots of 4K movies for a long time now and SD content is still as watchable as ever.
For framerates, especially in an interactive context, this is what happens though in my experience. But it also really depends what happens on screen - more movement needs higher framerates to feel smooth.
by account42
4/8/2026 at 6:44:44 PM
It's totally compatible though, and that's a big selling point. I use jj and nobody else at my work uses it and that has never been an issue.by SatvikBeri
4/8/2026 at 7:01:16 PM
I think the "incompatible" was more in the dvorak sense, which I believe is that whenever you are on another computer, it most likely won't have dvorak.For jujutsu, it's fine on your own computer, but you probably have to use git in the CI or on remote servers. And you probably started with git, so moving to jujutsu was an added effort (similar to dvorak).
by palata
4/9/2026 at 6:20:54 AM
>I think the "incompatible" was more in the dvorak sense, which I believe is that whenever you are on another computer, it most likely won't have dvorak.That's not a problem, just switch to Qwerty when you use a different computer. For me at least, it's not hard at all to switch between Dvorak and Qwerty.
by shiroiuma
4/9/2026 at 8:07:19 AM
> For me at least, it's not hard at all to switch between Dvorak and Qwerty.Sure, but you had to learn both. And what benefit did you get from learning Dvorak?
I feel the same with jujutsu: I have to learn it on top of git, and I don't see a lot of benefits from knowing it.
by palata
4/10/2026 at 4:58:52 AM
>And what benefit did you get from learning Dvorak?More comfortable typing, less wrist strain, etc. It's just a better layout.
by shiroiuma
4/9/2026 at 7:15:29 PM
Yes - this puts it perfectly. I am a very fast typist - I can type ~156wpm in QWERTY. When I was a kid and learned about Dvorak, it was tempting - but I already typed so fast that learning another keyboard just seemed like it would cause "misfires" in my brain - and virtual keyboards are all QWERTY.Same deal with jj vs. git. I've learned git. I've used it for 15 years. I'm proficient with it. I'm sure jj is better - but I'm not sure it's better enough to be worthwhile.
by johnmaguire
4/8/2026 at 7:08:28 PM
It doesn’t support submodules. So no, not totally compatible.by FrankBooth
4/8/2026 at 8:58:12 PM
That's a feature, not a bug /sby zhengyi13
4/8/2026 at 11:32:04 PM
Reminds me of how I started using Git when it was up and coming: It was the best Subversion client out there and no one knew I was using it!by herewulf
4/8/2026 at 6:44:56 PM
I don't even like using "natural" keyboards despite the ergonomic advantage because it ruins my muscle memory when I'm on the (much more prevalent) "regular" keyboard.by RankingMember
4/8/2026 at 10:47:21 PM
[dead]by smohare
4/8/2026 at 8:32:38 PM
Looks like the Perl of Git too. Those commands are wild compared to vanilla git.by bastardoperator
4/9/2026 at 8:17:25 AM
> How many redditors say 120fps is essential for gaming or absolutely require a mechanical keyboard?Those don't fit the others - they don't really require the user to adapt or are more complex in any way but are just nicer versions of the standard.
by account42
4/9/2026 at 8:44:45 AM
Pretty much everybody who does work at the real office where I am has a mechanical keyboard by now.by alper
4/8/2026 at 6:59:07 PM
I mean let's not be hasty. Mechanical keyboards used to be just normal keyboards when computers were still computers.by deno
4/8/2026 at 7:56:39 PM
That is a fair argument. I don't know why they dropped out of favour - price? Noise?by rjh29
4/8/2026 at 8:31:10 PM
My guess would be price. Shoppers probably got more sensitive to the price of a keyboard as the price of computers dropped, and approximately none of them were choosing between two computer-bundles at the store with any regard for keyboard quality.by lamasery
4/9/2026 at 12:20:45 AM
Most people and companies just use the keyboard that shipped with the computer. I don't think noise is as much of an issue as people make it out be.Marketing made up this story about linear switches being for gamers. So now every mechanical keyboard needs to make unnecessary noise and offer extra resistance for harder bottom out or you're not a serious typist.
But that's not inherent to the keyboard. Linear switches are not any louder than cheapo office high-profile membrane.
by deno
4/9/2026 at 4:18:49 AM
I find the resistance to be a hindrance when typing. Fastest typing speed and comfort for me is my thinkpad keyboard which uses scissor switches with a very low profile - you need less effort per keystroke!by rjh29
4/9/2026 at 8:25:26 AM
Both noise and resistance is something where mechanical keyboards can provide all desired options with the right switch choice. Gaming-oriented mechanical keyboards tend to have particularly low activation forces.There really isn't any reason not to choose one except for price - and that's a fair consideration if you're fine with rubber domes or other alternatives.
by account42
4/9/2026 at 10:13:34 AM
Right, that's why I recommend linear switches. But they're marketed as a gaming switch and they don't deserve this harmful reputation. They're simply the only non-stupid type of switch.Low profile scissors are a compromise. They are tactile but it's for once functional as it compensates for the obvious lack of travel. The result is a mediocre but still above average experience. You can type fast on them but with more fatigue than high-profile linear.
Marketers want you to believe there's at least three different distinct switch types for different purposes because they want to sell you the same keyboard twice or thrice. But in reality there's linear and stupid. And some of them make unnecessary noise. Some of them make really sweet nostalgia noises like Alps switches but it's still a worse typing experience.
by deno
4/9/2026 at 6:24:22 AM
I'm not a gamer these days, but from what I've seen, the gamers like a different type of keyswitch than regular typists. Normal typists like a clicky keyswitch where it clicks with very little travel, and has plenty of travel after this to avoid bottoming out. (so, Cherry blue)Gamers want mechanical keyswitches with no click at all. (Cherry brown I think)
by shiroiuma
4/9/2026 at 8:28:46 AM
Cherry browns are more like an average mechanical switch (and not in a bad way - they're a good middle ground if you use your keyboard for different things). Gaming oriented keyboards would use different ones.by account42
4/9/2026 at 10:09:53 AM
This is the marketing mythos I was talking about. The best typist keyboard is regular linear switch. Typing without bottom out is impossible. Clicking is just audio. Of course most mechanisms of producing clicking mean some degree of tactility (added resistance), but any tactility bump you have to overcome means you come out on the other side with more force which means harder bottom out. The way to reduce bottom out force is to not have any resistance, which is what linear switch is.The most popular type of switch is brown because it's essentially a linear switch that is not marketed towards gamers. It's just sad.
by deno
4/8/2026 at 4:56:02 PM
No, jj is super simple in daily use, in contrast with git that is a constant chore (and any sane person use alias). This include stuff that in git is a total mess of complexity like dealing with rebases. So not judge the tool for this odd case.by mamcx
4/8/2026 at 7:07:23 PM
> in contrast with git that is a constant chore (and any sane person use alias)I don't use aliases, I guess I'm insane?
Also 99.9% of the time, git "just works" for me. If I need to do something special once a year, I can search for it. Like I would with jujutsu.
by palata
4/8/2026 at 5:34:53 PM
One rarely needs more from git than `git add -A && git commit -m`.by Exoristos
4/8/2026 at 8:17:44 PM
I rebase stacked diffs all the time so jj makes my life so much easier because its rebasing is much more ergonomic than git.by tcoff91
4/8/2026 at 9:09:40 PM
this seems very easy in git tho how much easier can it get, do you have an example of each of them?by beanjuiceII
4/9/2026 at 9:47:57 AM
As someone else said, jj comes into its own when a reviewer insists you split your PR into many commits, because they don't want to review 13k lines in one chunk. In that case it is easier because there is no rebase. To change a PR commit in the middle of the stack you checkout a PR commit, edit it - and done. The rebase happened automagically.Notice I didn't say "edit it, commit, and done" because that's another thing you don't do in jj - commit. I know, `git commit` is just a few characters on the cli - but it's one of several git commands you will never have to type again because jj does it without having to be asked.
If the rebase created a merge conflict (it could do so in any PR commit above the one you edited) - it's no biggie because jj happily saves merge commits with conflicts. You just check it out, and edit to remove the conflict.
Jj does grow on you over time. For example, when you start with jj you end up in the same messes you did as a git beginner, when you recovered with 'rm -r repository', followed by 'git clone git@host/repository.git'. Then you discover 'jj op restore' which compared to git's reflog is a breath of fresh air. And while you might at first find yourself chafing at the loss of git staging, you gradually get comfortable with the new way of working - then you discover `jj evolog`, and it's "omg that's far better than staging". Ditto with workspaces vs worktrees, and just about everything else. It might be difficult to lose work with a bad git command, but actually impossible to lose work with a jj command.
It is a steep learning curve. We are talking months to use it fluently instead of treating it as git with better porcelain. If all you ever do is work with one commit at a time, it's a lot of effort for not a lot of return. But as soon as you start managing stacks of changes, duplicating them, splicing them, it makes you feel like a god.
That said, if you are starting out - I'd suggest starting with jj instead of git. You've got to go through a learning curve anyway. You may as well do it with the kinder, gentler, more powerful tool.
by rstuart4133
4/10/2026 at 7:21:53 AM
> That said, if you are starting out - I'd suggest starting with jj instead of gitThat wouldn't be my advice if you're going to work with other people. You can't know jj without knowing git well enough to fall back in general
by mi_lk
4/8/2026 at 9:29:04 PM
Git rebases don't work if there are conflicts, jj doesn't have this problem. Also idk if you can rebase onto multiple parents with git but jj can do it.by dpatterbee
4/8/2026 at 9:46:29 PM
Can you explain how conflicts are not conflicts?If I change a line of code several times and rebase on to a branch that changed the same lines of code, how are you sure what the right one is?
by aidos
4/8/2026 at 11:09:43 PM
JJ can save conflict related state with the change so that you don't need to resolve a conflict in the middle of a stack of changes for rebasing to continue for the remaining changes. Concretely, it uses a "conflict algebra" where it can track the impact of a conflict as it propagates through the stack of rebased changes: https://docs.jj-vcs.dev/latest/technical/conflicts/by sunnyps
4/9/2026 at 8:11:08 AM
But what does that bring? Your code won't compile as long as you don't fix the conflicts, so anyway you have to fix them when you rebase, right?by palata
4/9/2026 at 12:37:19 AM
That sounds like https://git-scm.com/book/en/v2/Git-Tools-Rerere ?by waisbrot
4/9/2026 at 4:47:23 AM
Not really very similar at all for the scenario discussed here. Rerere remembers how you have resolved a conflict before. It doesn't let you rebase a stack of commits that result in different conflicts. You will have to stop and resolve each conflict and then `git rebase --continue`.However, the conflict algebra does remove many common uses of rerere. See https://github.com/jj-vcs/jj/issues/175#issuecomment-1079831... for a longer discussion.
by martinvonz
4/9/2026 at 8:33:00 AM
Avoiding manual conflict resolution isn't really a good thing though - conflicts are an indication that multiple different changes affect some code and you really should think hard about what the combination of them should be. Even what git does automatically already can be dangerous.by account42
4/9/2026 at 1:43:22 PM
I agree, but that doesn't seem relevant. I did not say the jj automatically resolves conflicts.by martinvonz
4/9/2026 at 8:30:35 AM
I prefer `git commit --patch` and having a full editor for commit messages rather than a command-line -m argument to encourage me to actually write something useful.by account42
4/9/2026 at 8:45:51 AM
Nix does not really work in that even basic things are absurdly complicated and can take days of messing with poor libraries and documentation.That's not been my experience with jj which after the initial hurdle is a breeze.
by alper
4/9/2026 at 1:42:14 AM
I don't know about jujutsu, but I've actually found that Nix removes a lot of complexity. It's essentially just npm for tooling.Managing a flake.nix can be a bit more complex than a package.json in practice, due to the flexibility of the format and some quirks around Nix's default caching behavior, but working with it is a breath of fresh air compared relying on globally installed tools. Having said that, you might want to check out Devbox. I haven't used it myself, but found it recently and thought it looked like a nice abstraction over raw Nix.
by buu700
4/9/2026 at 3:31:28 AM
To be completely fair to JJ: you can still use git commands and any aliases with it. I daily JJ in all of my repos but I created these aliases inside of git. That's one of the great aspects of JJ: it's fully compatible with git.by qudat
4/8/2026 at 12:16:46 PM
I don’t understand how people can remember all these custom scripting languages. I can’t even remember most git flags, I’m ecstatic when I remember how to iterate over arrays in “jq”, I can’t fathom how people remember these types of syntaxes.by stingraycharles
4/8/2026 at 1:09:11 PM
I am convinced that the vast majority of professionals simply don't bother to remember and, ESPECIALLY WITH GIT, just look stuff up every single time the workflow deviates from their daily usage.At this point perhaps a million person-years have been sacrificed to the semantically incoherent shit UX of git. I have loathed git from the beginning but there's effectively no other choice.
That said, the OP's commands are useful, I am copying them (because obviously I won't ever memorize them).
by crispyambulance
4/8/2026 at 2:30:07 PM
> I am convinced that the vast majority of professionals simply don't bother to remember and, ESPECIALLY WITH GIT, just look stuff up every single time the workflow deviates from their daily usage.I wrote a cheat sheet in my notes of common commands, until they stuck in my head and I haven't needed it now for a decade or more. I also lean heavily on aliases and "self-documenting" things in my .bashrc file. Curious how others handle it. A search every time I need to do something would be too much friction for me to stand.
by freedomben
4/8/2026 at 4:38:30 PM
I just use Claude Code as a terminal for git these days. It writes up better commit messages than I would write anyway. No more "git commit -m fix"by dheera
4/9/2026 at 4:27:20 PM
I just wrapped these 5 diagnostic commands into a Claude Code skill. Because the post is useful but I'm not sure I can remember these git commands all the time... https://github.com/yujiachen-y/codebase-recon-skillby yujiachen
4/8/2026 at 11:24:58 PM
That could work if Claude Code made the code changes, but if you made them and only asked Claude to commit them, how does it know "why" you made those changes? Does it have access to your bug tracking system, for example?by selcuka
4/9/2026 at 1:37:28 AM
If Claude was used in the creation of the change, there's usually some dialogue for Claude to use.FWIW i use Claude to help with code changes, then give the diff to Gemini to review/ create meaningful commit messages
by awesome_dude
4/8/2026 at 5:29:50 PM
indeed, I held off for a while but finally caved because I got sick of seeing commits with `git commit -m .` littered in there. These are personal projects so I'm the only one dev-ing on them, but still so nice to have commit messages.by freedomben
4/8/2026 at 6:09:34 PM
I refuse to have alises and other custom commands. Either it is useful for everyone and so I make a change to the upstream project (I have never done this), or it won't exist next time I change my system so there is no point. I do have some custom tools that I am working on that haven't been released yet, but the long term goal is either delete them or release them to more people who will use them so I know it will be there next time I use a different system.by bluGill
4/9/2026 at 12:59:52 AM
> I refuse to have alises and other custom commands.I am the same way, and have caught much flack for it over the years.
But when I sit down at a foreign system (foreign in the sense that I haven't used it before) because something is broken and my help was requested, I don't have any need to lean on aliases.
I worked with someone once that had a very impressive bashrc, and it was very effective for them... on their workstation. Plop them in front of a production system, they can't even remember how to remount / rw because they've been using an alias for so long.
This is also why I learned vi, having started with emacs 30 years ago initially, as it was first taught to me. I know it'll be there, and I know how to use it.
by irishcoffee
4/9/2026 at 2:06:37 AM
You don’t need aliases when you have fzf fuzzy history search with ctrl-rby tcoff91
4/9/2026 at 12:44:48 PM
it's a tradeoff for sure. With dig especially I can't ever remember the normal syntax because I have aliases and scripts for things. I feel the aliases are wroth it since I'm on my own machine(s) 99.5% of the time, but it does suck to be handicappedby freedomben
4/9/2026 at 9:47:05 PM
Absolutely, and I think aliases are great and should be used. I, personally, worked in a handful of environments that made me realize it was infeasible to lean on aliases and helper scripts. Like bluGill said, if I need it in a real way, I'll try and upstream it.What I resent is someone telling me how to use a computer. I've got that bit mostly down at this point.
by irishcoffee
4/8/2026 at 5:23:57 PM
> At this point perhaps a million person-years have been sacrificed to the semantically incoherent shit UX of git. I have loathed git from the beginning but there's effectively no other choice.Yes! We mostly wouldn’t tolerate the complexity and the terrible UX of a tool we use everyday--but there's enough Stockholm Syndrome out there where most of us are willing to tolerate it.
by alwillis
4/8/2026 at 7:24:30 PM
Unless you're aware that such powerful commands are something you need once in a blue moon, and then you're grateful that the tool is flexible enough to allow them in the first place.Git may be sharp and unwieldy, but it's also one of the decreasing amount of tools we still use - the trend of turning tools into toys consumed the regular user market and is eating into tech software as well.
by TeMPOraL
4/8/2026 at 10:23:08 PM
Tools, done right, are a joy to use and allow you to be expressive and precise while also saving you labor. Good tools promote mastery and creative inquiry.Git is NOT that.
Git is something you use to get stuff done, until it becomes an irritating obstacle course of incidental complexity.
by crispyambulance
4/9/2026 at 1:28:42 AM
Hg is a joy to use compared to git. Sure wish hg had won.by irishcoffee
4/8/2026 at 8:44:17 PM
Why should there be tolerance? You look it up once, then write a script or an alias if it's part of your workflow. Or made a note if it's worth that. I use magit and I get quick action and contextual help at every step of my interaction with git.by skydhash
4/8/2026 at 11:02:43 PM
That's why I really like lazygit, I don't need to remember much because all the keymaps are shown in the UI. I like those kinds of Ui like whichkeys in neovim, or helix, or Doom Emacs.by kelvinjps
4/8/2026 at 6:24:03 PM
I just use my ide integrations for git. I absolutely love the way pycharm/jetbrains does it, and I'm starting to be ok with how vscode does. Remembering git commands besides the basics is just pointless. If I need to do something that the gui doesn't handle, I'll look it up and put it in a script.by dec0dedab0de
4/10/2026 at 7:18:00 AM
>I am convinced that the vast majority of professionals simply don't bother to remember and, ESPECIALLY WITH GIT, just look stuff up every single time the workflow deviates from their daily usagePartly that, but for me at least, I have a bunch of simple bash scripts and aliases for things I do frequently. Git makes this really easy because you can set aliases for lots of custom commands in the .gitconfig file.
by shiroiuma
4/8/2026 at 8:55:13 PM
I don't even think git cli UX is that bad. Didn't git pioneer this sub-command style? Much better than like e.g. ffmpeg. Sure some aspects are confusing. I still don't understand why `checkout` is both for changing branches and clearing uncommitted changes. But overall I think the tool is amazing. I've not observed a bug in git once.by ngruhn
4/9/2026 at 8:06:22 AM
`git change` can switch branches too if thats easier to grasp :)by twohaibei
4/8/2026 at 10:36:18 PM
> Didn't git pioneer this sub-command style?No, various other tools used it before git, e.g. openssl.
by jcynix
4/9/2026 at 4:12:50 AM
> I still don't understand why `checkout` is both for changing branches and clearing uncommitted changes.Because `checkout` is for getting the working directory to the state of a specific revision. Which both means switching branches (which are just pointer to revisions) and clearing changes (and get back to the starting revision). In both cases, you "check out" the version of the file at a specific commit or HEAD.
by skydhash
4/8/2026 at 2:01:44 PM
I’ve recently been looking into some tools that provide quick or painless help like pop up snippets with descriptions and cheat sheets, got any recommendations?by weedhopper
4/8/2026 at 3:19:59 PM
Navi is good for generating personal cheatsheets:https://github.com/denisidoro/navi
But for Git, I can't recommend lazygit enough. It's an incredible piece of software:
by arcanemachiner
4/10/2026 at 7:03:27 AM
Just handroll one, I wrote one in python, use an sqlite db, call out to fzf and voila you have the perfect tool. Codex can prob one shot itby FergusArgyll
4/8/2026 at 2:15:46 PM
I've found tldr to be usefulby rusted_gear
4/8/2026 at 5:27:49 PM
Cheaters: https://brettterpstra.com/projects/cheatersby alwillis
4/9/2026 at 1:59:22 AM
I think this is where LLMs shine. I experience the same difficulty with a lot of command line tools, .e.g find is a mystery to me after all these years. Whatever the syntax is, it just doesn't stick in my memory. Since recently I just tell the model what search I want and it gives me the command.by neonstatic
4/8/2026 at 7:05:29 PM
The relevant XKCD comic https://xkcd.com/1597/FWIW I too was once a "memorised a few commands and that was it" type of dev, then I read 3 chapters of the Git book https://git-scm.com/book/en/v2 (well really two, the first chapter was a "these are things you already know") and wow did my life with git change.
by awesome_dude
4/8/2026 at 12:42:50 PM
I don't, I will google things and fiddle, then put it in a git alias (with a comment on what it does and / or where I got it from) and push it to my private dotfiles repo, taking it with me between computers and projects.by Cthulhu_
4/8/2026 at 1:58:05 PM
You research it once, use it and then remember that it has "ancestor" in the command somewhere and then use ctrl + R to dig up something from your shell history.by dewey
4/8/2026 at 4:22:59 PM
jj's template and revset languages are very simple syntactically, so once you're comfortable with the few things you do use often it's just a question of learning about the other existing functions (even if only enough to know to look them up), which slot right in and compose well with everything else you know (unlike flags which typically have each their own system).Or, perhaps better yet, defining your own functions/helpers as you go for things you might care about, which, by virtue of having been named you, are much easier to remember (and still compose nicely).
by dzaima
4/9/2026 at 10:45:11 AM
Really, I got stuck trying to commit all files except those containing the string abc. As for revsets it's not easy to grab a single branch?by jiggunjer
4/8/2026 at 4:54:08 PM
Some things are idioms that one repeats so often they just stick, e.g. I use "grep.... | cut -c x-y | sort | uniq -c | sort -nr" to quickly grep frequency of some events from a log file.Don't feel bad - no one remembers them all, we just remember a few idioms we use...
by limaoscarjuliet
4/8/2026 at 3:16:48 PM
> I don’t understand how people can remember all these custom scripting languages.We can't.
Why do you think the `man` command exists?
by usrbinbash
4/9/2026 at 4:31:09 PM
Same here, so I wrap the post into an agent skill. Hope I can use them next time. https://github.com/yujiachen-y/codebase-recon-skillby yujiachen
4/8/2026 at 12:20:17 PM
Same, but now with AI I don't have to remember that anymoreby mgfist
4/8/2026 at 7:08:29 PM
For now - the law of enshittification means that the free/cheap access to AI will be curtailed soon enough.by awesome_dude
4/8/2026 at 7:18:41 PM
Pretty much any OS locally runnable LLM can generate this stuff.by mgfist
4/8/2026 at 3:54:27 PM
Nobody does. One person figures it out, then writes a blog post, and we all Google for it. Even git’s man pages are long and sometimes cryptic.by drob518
4/8/2026 at 2:57:19 PM
If I look something up twice, I record it in Obsidian. If I need it more than a couple of times, I'll probably make an alias, a script or a mask [1] file. Autocomplete and autosuggest are essential to my workflow. And good history search.by robrain
4/8/2026 at 3:12:10 PM
Yeah especially with git. All I know is pull, add, commit, push. Everything else I have to look up.by SoftTalker
4/9/2026 at 3:00:30 PM
lazygit helped me to get more into different git commands - I still don't know them by heart. but at least I use more git has to offer.and when a new branch is one key stroe away from being created, I am more inclined to use it.
by PapstJL4U
4/8/2026 at 7:27:42 PM
People naturally remember what they use frequently. For things they use infrequently, they search on-line and/or read the friendly manual.And yes, I'm also ecstatic when I manage to iterate over anything in `jq` without giving up and reaching for online reference. For `git`, functionality I use divides neatly into "things I do at least every week or two" and "things that make me reach for the git book every single time".
I mean, that was true until ~year or so. Now, I just have an LLM on speed dial. `howto do xyz in $tool`, `wtf is git --blah`, `oneliner for frobbing the widget`, etc.
by TeMPOraL
4/8/2026 at 6:42:45 PM
So, how does one iterate over an array in jq? Asking for a friend.by NoSalt
4/8/2026 at 7:09:32 PM
You and me both. Git is just so prevalent and fundamental to so much these days that I forced myself to use only a cheat sheet lying on my desk until I could comfortably use a reasonably productive subset by memory. Little did I know that that would make my colleagues think I'm some sort of git sage.But jq I use maybe once a week, and it just won't stick. Same for any git features beyond basic wrangling of the history tree (but, on the flip side, that basic wrangling has eliminated 99% of the times I have to look things up).
by gspr
4/8/2026 at 4:11:10 PM
You add them into your GIT config file as shortcuts?If you have multiple machines (/must have), just apply your user config to current machine?
by Fokamul
4/8/2026 at 3:09:38 PM
If you don't have to codedive new projects all the time, there's zero reason to memorize these. If your job is to look at new codebases all the time, you probably learn to remember these commands pretty quickly.by TheRealPomax
4/8/2026 at 7:19:27 PM
Saw all the replies crying over how verbose these are, clicked through to TFA expecting to see simpler commands. Nope, they're basically the same thing, just slightly shorter. I would never memorize either the jj or git versions if I planned to use them regularly; I'd make aliases.by dcre
4/8/2026 at 11:31:18 PM
This is the only sane reply on this entire comment tree.To me, the verbosity of both Git and JJ commands to do these things are an indication that neither of these tools are meant to do them.
by WolfeReader
4/9/2026 at 10:39:51 AM
crying over? Let's not be confrontational. I could say you're "crying" with this comment, but is that a good thing to say?by AlexeyBelov
4/9/2026 at 11:01:04 PM
Come on.by dcre
4/8/2026 at 3:01:21 PM
a project isn’t dying because of no commits. Rather it’s stableI often feel I need to setup bots to make superfluous commits just to make it look like my useful and stable repos are “active”
One example (not mine) a a qr-code generator library. Hasn’t been updated in 10 years. It’s perfect as is. It just provides the size and the bits. You convert those bits to any representation you want. It has no need to be updated
by socalgal2
4/8/2026 at 3:09:35 PM
It's rare, I think, for a project to have such a well defined and singular purpose that has not changed in 10 years nor have any bugs been discovered or its dependencies changed underneath it.It's not impossible, of course, but if I saw even a qr library that hadn't changed in 10 years I would worry that it wouldn't build on current systems (due to dependencies) and that nobody was actually using it (due to lag of bug reports).
by wredcoll
4/8/2026 at 3:44:54 PM
I have several of those projects. I avoid dependencies as much as possible, striving to only use things which I know ship with my target OS. I code for a level of correctness and longevity. That benefits everyone, including myself.A QR (or barcode) library is exactly the type of thing I’d assume would still work fine, since there’s nothing new to do, the parsing rules don’t change, it’s a static, known, solved problem.
by latexr
4/8/2026 at 5:02:23 PM
> A QR (or barcode) library is exactly the type of thing I’d assume would still work fine, since there’s nothing new to do, the parsing rules don’t change, it’s a static, known, solved problem.I agree with you - and yet the barcode library I used recently for a variable-data-printing project was last updated 13 hours ago, despite having been around since 2008!
by robinsonb5
4/8/2026 at 4:00:05 PM
Well said. Even an awesome library with no bugs that has no external dependencies still depends on the stdlib. For a while, before we were using containers, we even had the issue on Mac dev machines especially, where a half dozen Rubygems would crash while building its C extensions if your Mac OS version wasn’t just what the author expected, due to changes in the compiler shipped by Apple. So a MacOS major update might on its own functionally break a gem, even if the gem itself was designed well and you were using the same Ruby version.by xp84
4/8/2026 at 4:31:31 PM
This might be true for libraries or utilities that have a well-defined scope and no dependencies, but that's not what the article is focused on. When considering a company's main product, it's usually never done and patterns of activity—and especially changes in those patterns—can give you insight into potential issues.by saila
4/8/2026 at 6:47:38 PM
In a real company? A private codebase at a minimum should still be getting regular security patching and dependency updates. Always eventually one of those updates requires some level of refactor. If I see a project with no commits, I run away.by fishpen0
4/8/2026 at 3:35:44 PM
> a project isn’t dying because of no commits. Rather it’s stableAgreed. Assuming there are no open issues and PRs. When I find a project, if the date of the last commit is old, I next look at the issues and PRs. If there are simple-to-deal-with issues (e.g. a short question or spam) and easy-to-merge PRs (e.g. fixing a typo in the README) which have been left lingering for years, it’s probably abandoned. Looking at the maintainer’s GitHub activity graph should provide more clues.
> I often feel I need to setup bots to make superfluous commits just to make it look like my useful and stable repos are “active”
I have never done it, but a few times thought about making a “maintenance” release to bump the version number and release date, especially since I often use a variant of calendar versioning.
by latexr
4/8/2026 at 3:53:49 PM
I don't want to program git, I want to get stuff done so I would reject using that tool and do what the article author did running tried and true pipeable Linux/UNIX commands. It's also the same reason why I dislike Gradle and use Maven, I don't want to program my build I want to define and run my build.by newsoftheday
4/8/2026 at 4:19:17 PM
But the git commands in the article is also programming of the same kind, just using more terse, more obscure language. All the shell pipelines are sort, uniq, and grep.A language that properly maps to the data model, and has readable identifiers is a boon. Git is a database, a database needs a proper query language.
by nine_k
4/9/2026 at 10:17:11 AM
Cool! Thanks :) Jujutsu is such a nice tool. I don't understand why everything has to be so divisive nowadays. Enjoy the tools you like.by okkdev
4/8/2026 at 10:23:08 PM
Didn't ask for it thanksby NamlchakKhandro
4/8/2026 at 12:10:56 PM
Hah someone really looked at jq (?) and thought: "yes, more of this everywhere". I feel jq is like marmite (edit: aka vegemite, i.e. "you either love it or you hate it")by gib444
4/8/2026 at 2:46:56 PM
It's really not that bad, although the jq comparison might be apt. You have such primitives you need to understand, and then everything just fits together nicely. I find this much easier to write and understand than git's cryptic format strings.Disclaimer: I love jq too :)
by maleldil
4/8/2026 at 4:03:05 PM
It doesn't seem any more egregious than something like:`git log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --`
Which is something I see a lot of people alias in Git for viewing logs.
by plandis
4/9/2026 at 4:23:09 AM
> `git log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --`If you remove the rainbow specification, it should be
git log --graph --pretty=format:'%h -%d %s (%cr) <%an>' --abbrev-commit --
And most programmers are used to C style formatting.
by skydhash
4/8/2026 at 7:42:38 PM
Not interested, thank you.by cynicalsecurity
4/8/2026 at 12:44:34 PM
[dead]by huflungdung
4/8/2026 at 11:34:31 AM
I can't remember all of this, does anyone know of any LLM model trained on CLI which can be run locally?by faangguyindia
4/8/2026 at 11:44:38 AM
If you copy those commands into a file and use that file to prompt the “sh” LLM.by lamasery
4/8/2026 at 12:18:17 PM
That works until you need a small variation of any of these commands and you’re lost.by stingraycharles
4/8/2026 at 1:13:32 PM
Try https://cheat.sh/by fainpul
4/8/2026 at 12:50:34 PM
Not a model, but a product: warp.devby esafak