<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Kandeepa Sundaram</title>
    <description>The latest articles on DEV Community by Kandeepa Sundaram (@kandeepa_sundaram).</description>
    <link>https://dev.to/kandeepa_sundaram</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3997112%2Fcef20e04-b62e-4291-b18a-24f4436e8df0.jpg</url>
      <title>DEV Community: Kandeepa Sundaram</title>
      <link>https://dev.to/kandeepa_sundaram</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kandeepa_sundaram"/>
    <language>en</language>
    <item>
      <title>You Don't Have a Git Problem. You Have a Context Problem.</title>
      <dc:creator>Kandeepa Sundaram</dc:creator>
      <pubDate>Mon, 22 Jun 2026 16:36:36 +0000</pubDate>
      <link>https://dev.to/kandeepa_sundaram/you-dont-have-a-git-problem-you-have-a-context-problem-1co2</link>
      <guid>https://dev.to/kandeepa_sundaram/you-dont-have-a-git-problem-you-have-a-context-problem-1co2</guid>
      <description>&lt;p&gt;I once pushed a commit to a client repo under my personal email. Nothing broke that&lt;br&gt;
time — but in a regulated environment, the reverse mistake (work identity on a&lt;br&gt;
personal project) is an audit conversation nobody wants.&lt;/p&gt;

&lt;p&gt;After 18 years architecting software, I've learned that the most expensive bugs are&lt;br&gt;
rarely in the code. They're in the seams &lt;em&gt;around&lt;/em&gt; it. Git identity management is one&lt;br&gt;
of those seams — and almost nobody talks about it.&lt;/p&gt;
&lt;h2&gt;
  
  
  Most developers no longer work under a single identity
&lt;/h2&gt;

&lt;p&gt;A normal day:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Contributing to your company's GitHub org&lt;/li&gt;
&lt;li&gt;A freelance client's GitLab repo&lt;/li&gt;
&lt;li&gt;Your own side projects&lt;/li&gt;
&lt;li&gt;Open-source contributions&lt;/li&gt;
&lt;li&gt;Repos that each demand different SSH keys, GPG keys, and credentials&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Git is a brilliant tool. But it doesn't know your &lt;em&gt;intent&lt;/em&gt; — it uses whatever profile&lt;br&gt;
happens to be active. That gap is where the pain lives: lost productivity, broken&lt;br&gt;
focus, avoidable mistakes, and the occasional compliance scare.&lt;/p&gt;
&lt;h2&gt;
  
  
  The four flavours of this pain
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Wrong identity, wrong commit.&lt;/strong&gt; You write an hour of code, push, and someone&lt;br&gt;
says "that came from your personal account." Now you're amending commits, force-pushing,&lt;br&gt;
and explaining yourself. The code was fine. The identity wasn't.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. The endless config shuffle.&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git config user.email &lt;span class="s2"&gt;"work@company.com"&lt;/span&gt;
&lt;span class="c"&gt;# ...later...&lt;/span&gt;
git config user.email &lt;span class="s2"&gt;"me@gmail.com"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each switch is under a minute. Over months, it's hours — and one forgotten switch&lt;br&gt;
undoes all the savings.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. SSH and GPG chaos.&lt;/strong&gt; Separate keys per account, signed-commit requirements per&lt;br&gt;
org. Pick the wrong key and a 10-second commit becomes a debugging session or a&lt;br&gt;
rejected pipeline.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. The cognitive tax.&lt;/strong&gt; The biggest cost isn't technical — it's the flow-state&lt;br&gt;
interruption every time you stop to ask &lt;em&gt;"which identity am I right now?"&lt;/em&gt; Developers&lt;br&gt;
should be thinking about architecture and the business problem, not Git plumbing.&lt;/p&gt;

&lt;h2&gt;
  
  
  The business angle (why an architect cares)
&lt;/h2&gt;

&lt;p&gt;This scales past the individual: senior engineers burning time on other people's auth&lt;br&gt;
failures, slower onboarding (new hires losing their first hour to Git setup), and&lt;br&gt;
real audit risk from misattributed commits in regulated environments. A paper-cut at&lt;br&gt;
the individual level is a process cost at the org level.&lt;/p&gt;

&lt;h2&gt;
  
  
  Grit: solve it from the other end
&lt;/h2&gt;

&lt;p&gt;Instead of asking developers to switch configs manually, &lt;strong&gt;Grit manages Git identity&lt;br&gt;
automatically in the background.&lt;/strong&gt; No wrappers, no custom Git commands, no constant&lt;br&gt;
reconfiguration. Just the right identity, every commit.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Session-based memory&lt;/strong&gt; — Grit remembers the profile for each repo and restores it
when you return.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Automatic detection&lt;/strong&gt; — via &lt;code&gt;.grit&lt;/code&gt; files, directory paths, or remote-URL patterns:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  ~/work/*              → Work Profile
  ~/opensource/*        → Open Source Profile
  github.com/my-company/* → Corporate Profile
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Pre-commit protection&lt;/strong&gt; — a Git hook applies and verifies the correct identity
&lt;em&gt;before&lt;/em&gt; the commit is created, not after the mistake is found.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SSH + GPG per profile&lt;/strong&gt; — each profile carries its own key routing and signing
config, cutting auth drift and rejected commits.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cross-platform daemon&lt;/strong&gt; — runs quietly on Windows, Linux, and macOS.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The design lesson
&lt;/h2&gt;

&lt;p&gt;The hard part was never &lt;em&gt;switching&lt;/em&gt; identities — that's one shell command. The hard&lt;br&gt;
part is deciding &lt;em&gt;when&lt;/em&gt; to switch, reliably, without the developer ever thinking about&lt;br&gt;
it. That's a rules-engine-and-fallbacks problem, plus defense-in-depth (the daemon&lt;br&gt;
&lt;em&gt;and&lt;/em&gt; the pre-commit hook guarding the same one-line mistake). Same architectural&lt;br&gt;
muscle I've spent 18 years building, pointed at a paper-cut I lived with every day.&lt;/p&gt;

&lt;p&gt;I'm also designing an enterprise tier for teams who need this with audit trails and&lt;br&gt;
policy — more on that another time.&lt;/p&gt;

&lt;h2&gt;
  
  
  The point
&lt;/h2&gt;

&lt;p&gt;The best developer tools are the ones you stop noticing. Software is complex enough;&lt;br&gt;
the right Git identity should just be applied, every time, without costing you a single&lt;br&gt;
thought.&lt;/p&gt;

&lt;p&gt;Grit is open source and shipped. Pull it, break it, tell me what you'd do differently:&lt;br&gt;
&lt;strong&gt;&lt;a href="https://github.com/Kandeepasundaram/Grit" rel="noopener noreferrer"&gt;GRIT in GIT&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;If you've ever force-pushed to fix a wrong-identity commit — what happened?&lt;/em&gt;&lt;/p&gt;

</description>
      <category>git</category>
      <category>productivity</category>
      <category>devtools</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
