<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>GitDesktop</title><description>Engineering notes from building a desktop Git client for GitHub, GitLab and Bitbucket.</description><link>https://gitdesktop.app/</link><language>en-us</language><item><title>Is it safe to delete .git/index.lock?</title><link>https://gitdesktop.app/blog/is-it-safe-to-delete-index-lock/</link><guid isPermaLink="true">https://gitdesktop.app/blog/is-it-safe-to-delete-index-lock/</guid><description>Git says another process seems to be running. What .git/index.lock is, the one check to run before deleting it, and what a hard kill leaves behind.</description><pubDate>Wed, 16 Sep 2026 00:00:00 GMT</pubDate><dc:creator>theBGuy</dc:creator><category>git</category><category>recovery</category></item><item><title>What FETCH_HEAD is, and why you shouldn&apos;t merge it</title><link>https://gitdesktop.app/blog/dont-merge-fetch-head/</link><guid isPermaLink="true">https://gitdesktop.app/blog/dont-merge-fetch-head/</guid><description>FETCH_HEAD holds whatever the last fetch brought — any fetch, including your editor&apos;s. Merge it by name and the branch can swap between your two commands.</description><pubDate>Wed, 09 Sep 2026 00:00:00 GMT</pubDate><dc:creator>theBGuy</dc:creator><category>git</category><category>merge</category><category>recovery</category></item><item><title>git pull --rebase deleted your commit: the rescue and the reason</title><link>https://gitdesktop.app/blog/pull-rebase-deleted-your-commit/</link><guid isPermaLink="true">https://gitdesktop.app/blog/pull-rebase-deleted-your-commit/</guid><description>A force-pushed branch plus git pull --rebase silently drops commits you pushed. The reflog rescue, the fork-point mechanism, and why no flag prevents it.</description><pubDate>Wed, 02 Sep 2026 00:00:00 GMT</pubDate><dc:creator>theBGuy</dc:creator><category>git</category><category>rebase</category><category>recovery</category></item><item><title>Force push without overwriting your teammate&apos;s work</title><link>https://gitdesktop.app/blog/force-push-without-overwriting-work/</link><guid isPermaLink="true">https://gitdesktop.app/blog/force-push-without-overwriting-work/</guid><description>git push --force-with-lease protects you only until something fetches. The gap, demonstrated live, and the flag that closes it: --force-if-includes.</description><pubDate>Wed, 26 Aug 2026 00:00:00 GMT</pubDate><dc:creator>theBGuy</dc:creator><category>git</category><category>force-push</category><category>workflow</category></item><item><title>Work on two branches at once with git worktree</title><link>https://gitdesktop.app/blog/work-on-two-branches-at-once/</link><guid isPermaLink="true">https://gitdesktop.app/blog/work-on-two-branches-at-once/</guid><description>git worktree gives a second branch its own folder — one repository, two working trees, no stash dance. The rules that keep it safe, and the cleanup.</description><pubDate>Wed, 19 Aug 2026 00:00:00 GMT</pubDate><dc:creator>theBGuy</dc:creator><category>git</category><category>worktrees</category><category>workflow</category></item><item><title>Update a Git branch without checking it out</title><link>https://gitdesktop.app/blog/update-a-branch-without-checking-it-out/</link><guid isPermaLink="true">https://gitdesktop.app/blog/update-a-branch-without-checking-it-out/</guid><description>git fetch origin main:main moves a branch while you stay on another. The refspec that does it, the refusals that protect you, and the diverged case.</description><pubDate>Wed, 12 Aug 2026 00:00:00 GMT</pubDate><dc:creator>theBGuy</dc:creator><category>git</category><category>branches</category><category>workflow</category></item><item><title>I use AI every day. My Git client still has an off switch.</title><link>https://gitdesktop.app/blog/the-ai-off-switch/</link><guid isPermaLink="true">https://gitdesktop.app/blog/the-ai-off-switch/</guid><description>GitDesktop is AI-native. One toggle hides all of it. On agency, trust, and the Git client that&apos;s left when the AI is gone.</description><pubDate>Wed, 05 Aug 2026 00:00:00 GMT</pubDate><dc:creator>theBGuy</dc:creator><category>ai</category><category>workflow</category></item><item><title>Will this merge conflict? Find out without merging</title><link>https://gitdesktop.app/blog/preview-a-merge-before-you-run-it/</link><guid isPermaLink="true">https://gitdesktop.app/blog/preview-a-merge-before-you-run-it/</guid><description>git merge-tree does the whole merge in memory and names every file that would conflict — without touching your working tree, your index, or your branch.</description><pubDate>Wed, 29 Jul 2026 00:00:00 GMT</pubDate><dc:creator>theBGuy</dc:creator><category>git</category><category>merge</category><category>conflicts</category></item><item><title>The whole loop, one window: why I built this Git client</title><link>https://gitdesktop.app/blog/the-whole-loop-one-window/</link><guid isPermaLink="true">https://gitdesktop.app/blog/the-whole-loop-one-window/</guid><description>Pull requests that start before you push, branch updates without switching, and guardrails that aren&apos;t a pricing tier — the assumptions behind GitDesktop.</description><pubDate>Sun, 26 Jul 2026 00:00:00 GMT</pubDate><dc:creator>theBGuy</dc:creator><category>git</category><category>workflow</category><category>pull-requests</category></item><item><title>Recovering a dropped stash: what git fsck can still find</title><link>https://gitdesktop.app/blog/recover-a-dropped-git-stash/</link><guid isPermaLink="true">https://gitdesktop.app/blog/recover-a-dropped-git-stash/</guid><description>A dropped or lost git stash is almost never gone. How to find it with git fsck, tell the real stash commit from its index twin, and get the work back.</description><pubDate>Sat, 25 Jul 2026 00:00:00 GMT</pubDate><dc:creator>theBGuy</dc:creator><category>git</category><category>recovery</category><category>stash</category></item></channel></rss>