site banner

Small-Scale Question Sunday for November 23, 2025

Do you have a dumb question that you're kind of embarrassed to ask in the main thread? Is there something you're just not sure about?

This is your opportunity to ask questions. No question too simple or too silly.

Culture war topics are accepted, and proposals for a better intro post are appreciated.

2
Jump in the discussion.

No email address required.

Are people here familiar with git frontends?

Having again lost a day's work to git deciding to delete files I hadn't committed yet (nor will I ever commit to the master), I'm now looking for a git frontend that doesn't completely suck balls. Is there anything that fits the following tenets:

  1. My local files are sacred. Under no circumstances can they be deleted without some way to undo it. No exceptions. If the files in the repo and my working copy differ, show it to me so I can choose what to do on a per-file / directory basis.
  2. The repo has only a single origin. I don't care if Linus needs twenty thousand different repos to pull and push things from. I use one. The tool shall treat every branch as always having that as origin.
  3. A submodule should only mean the short text file that contains the SHA hash. The contents of submodule directories should be completely ignored when pulling, merging, committing or pushing. Yes, I know the repo's submodule refers to a different set of files than the ones in my working copy. That is intentional.
  4. I don't want to ever have to see or care about staged files. My files are either being worked on or have been committed. There is no such thing as a staged file.
  5. No operation should leave things halfway, something staged or any ><!¤#"¤#% characters in files. It either completes succesfully or leaves the working copy as it was before. Not some quantum Schrödinger's halfway state.

It gets really laborous having to have the actual working copy, the one git wants to see and the authorative origin/master and manually trying to manage them without git completely fucking up my working copy just because a branch pointer was changed somewhere.

I am not a git GUI guy, I've always used IDEs and the CLI. I've heard, however, that many high-caliber devs I know have historically paid for Kraken.

Some of the other things you demand here can and should be set up with pre-command hooks (outlawing other repos). Some can be accomplished by writing your own commands or overwriting the stock ones. I've written 3 for myself:

  • checkpush - single command to create a new branch on the remote and commit to it
  • fullprune - removes local branches that were deleted in the remote after squash merges
  • refresh - gets the latest commits from master and merges them into your current branch. If you squash, it's very reliable.

Making committing a single step (no staging) will be very simple this way.

I'm not a high-caliber dev, but I've used and will recommend gitkraken, especially for very large teams or very distributed projects; it's one of the few that handles heavily forked projects and related PRs well. That said, I don't know that that it does much to solve these specific issues.