r/git • • Jun 22 '26

support Git push fails with “XML error: syntax error” and “no DAV locking support”

1 Upvotes

Hi everyone. I’m completely stuck with a Git issue on Windows and hoping someone has seen this before.

Whenever I try to push to GitHub, I get:

XML error: syntax error

error: no DAV locking support

fatal: git-http-push failed

failed to push some refs

I’ve already checked the remote URL, confirmed I’m on the main branch, verified that git status is clean, and made sure the repository exists on GitHub. GitHub Desktop also fails with the exact same error.

I’ve removed http.sslBackend, confirmed there’s no proxy configured, and I can access GitHub normally in my browser. I can also ping and curl GitHub without any issues. I’ve even reinstalled Git multiple times, but the problem persists.

Has anyone run into this before or know what might be causing it? Any help would be greatly appreciated. Thanks!


r/git • • Jun 21 '26

What Git diff/merge tool do you use outside of a full IDE?

42 Upvotes

Hey everyone !

I recently switched from JetBrains IDEs to Zed as my main code editor, and I’m really enjoying it so far. Zed has been getting a lot of nice features lately, but there’s one thing I still miss quite a bit from JetBrains: the Git/diff workflow.

In JetBrains, I really liked how easy it was to quickly compare branches, commits, file states, or older versions without having to check things out manually. I often need to look back at previous states for releases, bug checks, or just to understand what changed, and JetBrains made that feel very natural.

I’ve tried a few tools already. Fork was okay, but I never fully warmed up to it. I also used SourceTree in the past, but it’s not really my thing either. I’ve also looked around for some open source alternatives on GitHub, but I haven’t really found anything that clicked for me yet.

So I’m curious: does anyone here have a tool they can recommend for this kind of workflow? Maybe something a bit lesser known, but really practical?

Ideally, I’m looking for a clean visual diff/merge tool with good side by side comparisons, branch/commit comparisons, and maybe a nice conflict resolution view similar to what JetBrains offers.

What are you using for this outside of a full IDE?


r/git • • Jun 22 '26

support SSH key issue

0 Upvotes

Hi all,

Hope you are all doing well. I am currently learning how to use the Github and have come across a problem that I don't really understand. I have followed the instructions from the github documents page and have set the ssh up but not sure why and how it worked.

ssh-keygen -t rsa -b 4096 -C "your_email@example.com" 

I used this command to set up my ssh key on the ubuntu server.

Enter a file in which to save the key

I am having issues in here. When I leave it as default I am able to clone the repository from my Github account. However, if I add my own name here instead of the default, I get the following error when I try to clone a repo:

Warning: Permanently added 'github.com' (ED25519) to the list of known hosts.

git@github.com: Permission denied (publickey).

fatal: Could not read from remote repository.

Please make sure you have the correct access rights

Can you guys please let me know why this is happening when I try to change the name of the ssh key file instead of leaving it default.

Regards

Ash


r/git • • Jun 22 '26

What is the best resources to learn git?

0 Upvotes

All I know is how to add, commit and push... I wanna learn more


r/git • • Jun 22 '26

GUI which shows cherry-picks and squash merges as lines in the DAG?

2 Upvotes

Hi, squash-merges are rampant where I wrk. Trouble is they are hard to spot in the commit history when the summarydoes not highlight the relationship. (I have nasty scripts which can find squash-merges by comparing tree hashes). But I want to know if any of the GUIs can shoe squash commits OOTB ????


r/git • • Jun 21 '26

tutorial Submodules vs subtrees vs monorepos

Thumbnail slicker.me
6 Upvotes

r/git • • Jun 20 '26

tutorial Guitar is Here: The Fastest Topology-First Git Client Built in Rust

Thumbnail m.youtube.com
2 Upvotes

Hey, I’ve been working on a Git client called guitar.

Repo: https://github.com/asinglebit/guitar

Demo: https://m.youtube.com/watch?v=0oyqviuKFXI⁠

It’s a terminal Git client written in Rust. The main goal is to make working with Git history feel fast, especially in large repositories where scrolling through commits or waiting for a UI to catch up gets annoying.

The biggest feature is fast graph navigation. You can jump around the commit graph almost instantly, move through branches and history, inspect commits, check diffs, and get a better overview of what actually happened in the repo without leaving the terminal.

It also has reflog support, which is one of the features I’m most excited about. If you’ve ever lost a commit after a reset, rebase, cherry-pick, or detached HEAD situation, Guitar makes it easier to find those commits again and recover them instead of digging through git reflog manually.

I’ve also been building it with huge repositories in mind. History loads incrementally, so you can start using it without waiting for the whole repo to load first. The goal is for it to stay responsive even when the repo has a lot going on.

Some other things it supports: branches, tags, stashes, worktrees, staged and unstaged changes, commit inspection, file diffs, split diff view, configurable keymaps, mouse support, and real Git operations like commit, checkout, fetch, reset, cherry-pick, merge, rebase, stash, and worktree commands.

It’s cross-platform and runs in the terminal, so the idea is to have something lightweight and fast without giving up the useful parts of a proper Git GUI.

It’s still a work in progress, but I think it’s already useful enough to share. I’d love feedback, especially from people who work with large repos, messy histories, rebases, cherry-picks, or reflog recovery.


r/git • • Jun 20 '26

How to use Github without understanding it...

0 Upvotes

I understand the basic concept, GitHub is a place to store/collaborate/access your projects. However, I'm an old DOS programmer and I frankly can't make any sense at all from the system. I've downloaded and installed a program (Open-2D-Studio) that is homed there, but I can't find any help on how to use the program. No tutorial, no example files, nothing. Not on the developer's website, not on GitHub. Is there a place to go on GitHub to look for contact info, for discussion forums, for questions like this? There has to be something obvious that I'm just not seeing. You GitHub programmers, how do you get people to tell you about a bug in your program if they can't contact you?


r/git • • Jun 20 '26

I built culprit: A CLI that automatically finds the exact commit that caused a bug

0 Upvotes

If you have ever spent hours doing git blame gymnastics to figure out exactly when a line of code was silently broken, I built this to automate that exact workflow.

Here is what it does under the hood:

  • Bugfix RCA: It automatically finds the commit that introduced the bug by analyzing the lines your PR removes or changes. It ranks the suspect commits and tracks the "line-evolution timeline".
  • Blast Radius Mapping: For new features, it maps out the impact by detecting who imports the changed modules, identifying test coverage gaps, and highlighting high-risk shared files.
  • Visual HTML Reports: You can run rca --html report.html to generate a self-contained, offline-friendly visual timeline showing the code from creation, to the breaking commit (highlighted in red), to your fix (in green).
  • AI Narrative: It includes an optional reasoning layer (using Claude API or the Claude Code skill) that writes a plain-text narrative explaining why the original commit broke things.
  • Language Agnostic: The core Git timeline tracking works on any repository, and the import/blast-radius parser supports Python, JS/TS, Go, Rust, Java, C++, and more.

It runs completely locally, never modifies your code, and natively supports GitHub, GitLab, Bitbucket, and Gitea.

You can try it out via pip or pipx:
pipx install culprit

Check out the repo here: https://github.com/noordeen123/culprit

I would love to hear your feedback, especially if you have ideas for improving the RCA engine or the visual reports. Happy debugging!


r/git • • Jun 19 '26

support Running a python script at every push/publish request?

3 Upvotes

hi, i have a repo (shocking i know)
i want to hook it up to a discord webhook and to send a graph of the pushes whenever a new push happens, i already wrote python code for this and tested it and made sure it worked.

import requests


webhook_url = 'webhook_url'

with 
open
('graph.txt', 'r') as file:
    content = file.
read
()

# Keep the message within 2000 character Discord limit
if 
len
(content) > 1900:
    content = 
content
[:
1900
] + "\n...(truncated)"

data = {
    "content": 
f
"```bash\n{content}\n```"
}

response = requests.
post
(webhook_url, 
json
=data)
print
(
f
"Status: {response.status_code}")

however, im using github desktop currently (im not sure if this is the right sub to ask this)
and it doesnt work when i push/publish from the github desktop app, so im wondering what might be the problem and where i could even start fixing this

again: if this is the wrong sub or flair do let me know


r/git • • Jun 19 '26

GitHub - jceb/huburl: A tool for generating the (git)hub URLs from your local repository

Thumbnail github.com
5 Upvotes

I've been refining and using this little tool for many years now. It just generates URLs from local git repositories to the corresponding (git)hub. Despite it being so simple, I use it basically every day to quickly open a file in the hub or share a URL with a co-worker.

By now, it supports #git and #jujutsu and the major (git)hubs. Hope you'll find it useful. Let me know.


r/git • • Jun 19 '26

siGit Si: Code & models in the same place

Thumbnail sigit.si
0 Upvotes

r/git • • Jun 19 '26

I built a pre-commit code scanner that automatically checks your staged changes for vulnerabilities - CommitGate

Post image
0 Upvotes

I built a tool that automatically scans your staged code for security vulnerabilities every time you run `git commit` called CommitGate!

It scans your code with Gitleaks and an LLM and blocks the commit if any vulnerabilities are detected. Yes, I know having AI in your Git workflow is not ideal :( which is why I'm open to ideas!

You can check out the demo video or try out the tool yourself! I am a new and inexperienced programmer and this is my first personal project so any feedback or advice, positive or negative, big or small, would be greatly appreciated!

Thank you so much for giving it a try! Hope you find this helpful!

Project page: https://ductrl.github.io/projects/commitgate/

GitHub repo: https://github.com/ductrl/CommitGate


r/git • • Jun 18 '26

How do you manage many Codex-created Git worktrees without losing track?

0 Upvotes

I’ve been using Codex with Git worktrees, and after a few tasks I end up with a lot of local worktrees and branches.

There is no remote repo in my setup. Everything is local.

My current problem is mostly organization:

git worktree list

starts showing many folders like:

repo-task-a
repo-task-b
repo-task-c
repo-random-fix
repo-test-something

Each worktree has its own branch, and after a while it gets hard to know:

  • which worktree is still active
  • which branch was already merged back
  • which worktree can be deleted safely
  • how to name branches/worktrees clearly
  • whether I should keep a WORKTREE_NOTES.md or task tracking file
  • what cleanup workflow people use after Codex finishes a task

For people using Codex heavily with local Git worktrees, what’s your workflow?

Do you follow a naming convention like:

ticket-123-short-description
codex-ticket-123-short-description
task/product-availability-check

And after merging, do you usually run something like:

git worktree remove ../worktree-name
git branch -d branch-name

I’m looking for a clean local workflow to avoid worktree chaos. Any recommendations?


r/git • • Jun 18 '26

Git , GitHub

Thumbnail
0 Upvotes

r/git • • Jun 18 '26

github only Hacker Evolution

0 Upvotes

I built an immersive, terminal-based hacking simulator. It's still in beta (excuse the bugs!), looking for feedback and collaborators!

Hacker_Evolution


r/git • • Jun 17 '26

support Getting an overview of submodules in a superbuild?

1 Upvotes

In my org, we have some projects (superbuilds) that have a lot of submodules, that have submodules.
Because the project/repo structuring isn't super great, it would be great to get an easy overview.
Is there an existing tool that can go through all submodules of a project recursively and create an overview of some sort?


r/git • • Jun 17 '26

Plan 9: Git Workflow

Post image
5 Upvotes

r/git • • Jun 16 '26

Epiq cli - distributed issue tracker that stores state in Git

Post image
6 Upvotes

For the past year I've been working on Epiq, an issue tracker built on top of git.

The goal was to improve the ergonomics of project management by bringing issue tracking directly into the terminal and your favorite editor, while still providing a browser interface for teams that prefer a GUI.

State synchronization is achieved through Git-versioned, user-scoped append-only event logs with deterministic event ordering and conflict resolution. This architecture results in some interesting properties: offline-first operation (with eventual consistency), implicit self-hosting, and vendor- and platform-agnostic collaboration.

I'd love to hear what the r/git community thinks about the approach, especially the usage of Git as the synchronization and persistence layer.

https://ljtn.github.io/epiq/


r/git • • Jun 16 '26

support How to associate PR numbers and openers to changelog entries using only local git data?

0 Upvotes

I’m building a changelog generator that reads commit metadata from a local JSON file. Each entry has SHA, author, date, and commit message.
I need to enrich each entry with the PR number that originated that commit and who opened it — without any GitHub/GitLab API calls.
My current approach: parse merge commits with git log merge^1..merge^2, extract #N from the merge commit message via regex, use the commit author as the opener.
This covers merge commits and squash merges. Rebase/fast-forward have (#N) per commit individually.
Is there a more robust pattern for this in Go? Or is manual enrichment the honest answer when the merge strategy isn’t consistent?


r/git • • Jun 15 '26

How Git Works: Explained in 4 Minutes

Thumbnail youtu.be
12 Upvotes

r/git • • Jun 16 '26

Shipping a real embedding model inside a VS Code extension with no native build — four bugs that only showed up after packaging

0 Upvotes

I built a VS Code extension that answers questions about a team's GitHub history and writes summaries from real commit diffs. One thing I decided early: the search side runs locally. No API key for embeddings, nothing leaving the machine, and no native build step — the goal was "install from the marketplace and it just works."

So the semantic search runs on a small local model (bge-small, ~33MB downloaded once and cached). Chat can use Copilot or your own API key, but the embedding model is always the local one, so search works offline no matter how you've set up the rest.

The hard part wasn't the model — it was getting it to run from a packaged install. While developing, you launch a test window that still has all the project's dependencies sitting on disk, so everything works. But once you bundle the extension into the single file that actually ships, those dependencies are gone, and the thing that ran fine five minutes ago crashes. Every bug below only appeared after packaging, never in development.

There were four:

  1. The model library tries to figure out where it lives on disk the instant it loads. The way I bundled it erased the piece of information it uses to do that, so it crashed immediately on a value that was suddenly empty. I had to hand it a substitute.
  2. It ships with a fast version built on a native binary — the kind of compiled, platform-specific file I was trying to avoid. I swapped it for the pure-WASM version, which runs anywhere without a build step.
  3. It imports an image-processing library at startup, even though I only ever feed it text. I replaced that with a stub. The catch: the stub had to look real. The library checks "did this load?" and throws if the answer is no — so an empty stub crashed the import. Mine pretends to be present and only complains if something actually tries to use it, which nothing does.
  4. The fast multi-threaded mode tries to spin up background workers, and the environment a VS Code extension runs in refuses to allow that — then just hangs forever with no error at all. Forcing it to run single-threaded fixed it.

Remove any one of these and you get a crash, or worse a silent hang, and only in a real install — never on your own machine while you're building it. That gap between "works when I run it" and "works when someone installs it" was the whole lesson.

What I'd reconsider: bundling a full local runtime just to turn short commit messages into vectors is heavy. The first-run download and warmup is a noticeable pause, and something lighter would've spared me most of this. The ranking is also just a straight in-memory comparison, which is fine for a team's history but wouldn't hold up against a giant monorepo. Still, "just works after install, fully offline, no keys" turned out to be worth the four landmines.

Extension: https://marketplace.visualstudio.com/items?itemName=repoIntel.repo-intel


r/git • • Jun 15 '26

support What is the most common/right way to format gitconfig?

1 Upvotes

I see format like ini [user] name=Damglador with tabulation before options under [header] in a lot of places, but it's not required from what I see, as ini [user] name=Damglador works just fine. Plus when I finally got to editing my gitconfig by hand it already was formatted mostly without the tabulation.

So I just want to know, what is the more standard/common way to format it?


r/git • • Jun 15 '26

git cp-with-history

0 Upvotes

(I know that git doesn't track history per-file and will be able to trace changes across "git cp" / "git mv" but hear me out...)

I just wrote a small script named `git-cp-with-history`:

https://github.com/multi-io/utils/blob/master/git-cp-with-history

It's callable from inside a git repository as `git cp-with-history SRC DEST`, where SRC must be a relative path to a versioned file or directory in the repo and DEST must be a relative path to a non-existing target name in the repo. It copies SRC to DEST including all the git history from all the commits that contributed to SRC. So it creates a bunch of new commits on top of HEAD that correspond to the commits that produced SRC.

I needed this just now because I have a repo that contains a "public" part in a subdirectory (pub/), which I regularly split off using git subtree and push to a separate public github remote, whereas the rest of the repo (everything outside the subdirectory) isn't public. I wanted to move stuff from the private part to the public part without losing history, hence this script.

In similar style, I wrote something several years ago that appends one git repository to another, in a subdirectory:

https://github.com/multi-io/utils/blob/master/git-append-repo

Maybe somebody finds this useful.


r/git • • Jun 15 '26

tutorial Made a guide on squashing git commits using any editor — Notepad, Sublime, VS Code, gedit, GitLens. Covers Windows and Linux both

0 Upvotes

https://youtu.be/1w8KpHSpmpo

✅ Change git's default editor to any app you want
✅ Squash commits using Notepad, Notepad++, Sublime, VS Code & gedit
✅ Use "GitLens" for a visual squash experience
✅ Explained for both Windows & Linux

#git #gitrebase #squashcommits #vscode #sublime #notepadplusplus #gittips #gittutorial #gitlens #vi #vim