
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:base="https://comprendre-git.com/en/">
  <title>Articles, protips, tutorials about Git</title>
  <subtitle>Tutorials, protips and other technical stuff</subtitle>
  <link href="https://comprendre-git.com/en/feed.xml" rel="self" />
  <link href="https://comprendre-git.com/en/" />
  <updated
    >2023-04-10T00:00:00Z</updated
  >
  <id>https://comprendre-git.com/en/</id>
  <author>
    <name>Maxime Bréhin</name>
  </author>  <entry>
    <title>Git protip: easy templates for `.gitignore`</title>
    <link href="https://comprendre-git.com/en/protips/git-protip-gitignore-io/" />
    <updated>2023-04-10T00:00:00Z</updated>
    <id>https://comprendre-git.com/en/protips/git-protip-gitignore-io/</id>
    <content xml:lang="en" type="html">The .gitignore file is great! But it can be tedious to fill in. What if we could do it all in one go?</content>
  </entry>  <entry>
    <title>Ignoring files with Git</title>
    <link href="https://comprendre-git.com/en/config/git-ignore/" />
    <updated>2023-04-10T00:00:00Z</updated>
    <id>https://comprendre-git.com/en/config/git-ignore/</id>
    <content xml:lang="en" type="html">How can we avoid adding unwanted files to Git?  And reciprocally, how can we add otherwise ignored files?</content>
  </entry>  <entry>
    <title>Configuring Git</title>
    <link href="https://comprendre-git.com/en/config/git-config-part-2/" />
    <updated>2023-03-27T00:00:00Z</updated>
    <id>https://comprendre-git.com/en/config/git-config-part-2/</id>
    <content xml:lang="en" type="html">Using Git optimally goes through tweaking its configuration!</content>
  </entry>  <entry>
    <title>Git protip: speed up conflicts management with mergetool</title>
    <link href="https://comprendre-git.com/en/protips/git-mergetool/" />
    <updated>2023-02-06T00:00:00Z</updated>
    <id>https://comprendre-git.com/en/protips/git-mergetool/</id>
    <content xml:lang="en" type="html">Resolving conflicting files after a merge can be time consuming. Fortunately Git provides us with a tool to speed this up!</content>
  </entry>  <entry>
    <title>Git protip: automatically setup remote tracking on push</title>
    <link href="https://comprendre-git.com/en/protips/git-push-auto-setup-remote/" />
    <updated>2023-01-30T00:00:00Z</updated>
    <id>https://comprendre-git.com/en/protips/git-push-auto-setup-remote/</id>
    <content xml:lang="en" type="html">No more explicit branch tracking on push! Say hello to autoSetupRemote configuration!</content>
  </entry>  <entry>
    <title>Git protip: gently force push</title>
    <link href="https://comprendre-git.com/en/protips/git-push-with-lease/" />
    <updated>2023-01-23T00:00:00Z</updated>
    <id>https://comprendre-git.com/en/protips/git-push-with-lease/</id>
    <content xml:lang="en" type="html">Did you know that you could force the push without risking to erase your collegues work?</content>
  </entry>  <entry>
    <title>Git protip: autocorrect command typos</title>
    <link href="https://comprendre-git.com/en/protips/git-autocorrect/" />
    <updated>2022-12-12T00:00:00Z</updated>
    <id>https://comprendre-git.com/en/protips/git-autocorrect/</id>
    <content xml:lang="en" type="html">Do you make typos when writing your commands? Would you like Git to correct automatically?</content>
  </entry>  <entry>
    <title>Git protip: quickly rewrite an old commit message</title>
    <link href="https://comprendre-git.com/en/protips/git-protip-autoreword/" />
    <updated>2022-10-17T00:00:00Z</updated>
    <id>https://comprendre-git.com/en/protips/git-protip-autoreword/</id>
    <content xml:lang="en" type="html">What about an alias that would to the job for you?</content>
  </entry>  <entry>
    <title>Git protip: easily add missing changes to an old commit</title>
    <link href="https://comprendre-git.com/en/protips/git-protip-autofixup/" />
    <updated>2022-10-17T00:00:00Z</updated>
    <id>https://comprendre-git.com/en/protips/git-protip-autofixup/</id>
    <content xml:lang="en" type="html">You can quickly &quot;update&quot; an old commit thanks to &quot;commit --fixup&quot;</content>
  </entry>  <entry>
    <title>Git protip: track function changes with &quot;log -L&quot;</title>
    <link href="https://comprendre-git.com/en/protips/git-protip-log-l/" />
    <updated>2022-10-10T00:00:00Z</updated>
    <id>https://comprendre-git.com/en/protips/git-protip-log-l/</id>
    <content xml:lang="en" type="html">Use &quot;git log -L&quot; to track changes only within a code block, figure out who actually introduced a bug, etc.</content>
  </entry>  <entry>
    <title>Git protip: blame, please don’t!</title>
    <link href="https://comprendre-git.com/en/protips/git-protip-dont-blame-me/" />
    <updated>2022-10-10T00:00:00Z</updated>
    <id>https://comprendre-git.com/en/protips/git-protip-dont-blame-me/</id>
    <content xml:lang="en" type="html">Do you think &quot;git blame&quot; is a good idea? You’re wrong!</content>
  </entry>  <entry>
    <title>Git protip: fix last commit with &quot;--amend&quot;</title>
    <link href="https://comprendre-git.com/en/protips/git-protip-amend/" />
    <updated>2022-09-26T00:00:00Z</updated>
    <id>https://comprendre-git.com/en/protips/git-protip-amend/</id>
    <content xml:lang="en" type="html">You just screwed up your last commit and want to fix it? The &quot;git commit --amend&quot; command is your friend!</content>
  </entry>  <entry>
    <title>Git protip: a graphical log that rocks!</title>
    <link href="https://comprendre-git.com/en/protips/git-protip-lg/" />
    <updated>2022-08-29T00:00:00Z</updated>
    <id>https://comprendre-git.com/en/protips/git-protip-lg/</id>
    <content xml:lang="en" type="html">The classic Git log (for displaying the commit history) does not fit the standard use case. Rather than using a graphical interface, let’s use an alias and a custom log.</content>
  </entry>  <entry>
    <title>Git protip: a nice and efficient diff in the console</title>
    <link href="https://comprendre-git.com/en/protips/git-protip-diff-so-fancy/" />
    <updated>2022-08-28T00:00:00Z</updated>
    <id>https://comprendre-git.com/en/protips/git-protip-diff-so-fancy/</id>
    <content xml:lang="en" type="html">See differences in files, line by line, without any visual pollution</content>
  </entry>  <entry>
    <title>Enhance your commits with Git hooks!</title>
    <link href="https://comprendre-git.com/en/automation/git-hooks-commit/" />
    <updated>2019-01-03T00:00:00Z</updated>
    <id>https://comprendre-git.com/en/automation/git-hooks-commit/</id>
    <content xml:lang="en" type="html">Enhance your code and your commit messages with Git hooks.</content>
  </entry>  <entry>
    <title>Addicted to hooks</title>
    <link href="https://comprendre-git.com/en/automation/git-hooks/" />
    <updated>2017-04-14T00:00:00Z</updated>
    <id>https://comprendre-git.com/en/automation/git-hooks/</id>
    <content xml:lang="en" type="html">Improve quality and reduce stress with tasks automation.</content>
  </entry>  <entry>
    <title>Mastering Git Reset: Commit Alchemy</title>
    <link href="https://comprendre-git.com/en/commands/git-reset/" />
    <updated>2016-05-11T00:00:00Z</updated>
    <id>https://comprendre-git.com/en/commands/git-reset/</id>
    <content xml:lang="en" type="html">The git reset command is a formidable tool unfortunately far too often misunderstood or poorly used. This is too bad, as it opens up a wide range of solutions and tips to optimize our work and workflows.</content>
  </entry>  <entry>
    <title>Mastering Git subtrees</title>
    <link href="https://comprendre-git.com/en/commands/mastering-git-subtrees/" />
    <updated>2015-01-30T00:00:00Z</updated>
    <id>https://comprendre-git.com/en/commands/mastering-git-subtrees/</id>
    <content xml:lang="en" type="html">A month ago we were exploring Git submodules; I told you then our next in-depth article would be about subtrees, which are the main alternative.</content>
  </entry>  <entry>
    <title>Mastering Git submodules</title>
    <link href="https://comprendre-git.com/en/commands/mastering-git-submodules/" />
    <updated>2014-12-31T00:00:00Z</updated>
    <id>https://comprendre-git.com/en/commands/mastering-git-submodules/</id>
    <content xml:lang="en" type="html">If you used submodules before, you certainly got a few scars to show for it, probably swearing off the dang thing. Submodules are hair-pulling for sure, what with their host of pitfalls and traps lurking around most use cases. Still, they are not without merits, if you know how to handle them.</content>
  </entry>  <entry>
    <title>Git Bisect: quickly zero in on a bug’s origin</title>
    <link href="https://comprendre-git.com/en/commands/git-bisect/" />
    <updated>2014-12-09T00:00:00Z</updated>
    <id>https://comprendre-git.com/en/commands/git-bisect/</id>
    <content xml:lang="en" type="html">Oooh, what a nasty bug you just noticed! Alas, you can’t seem to find out where it originates just now, and it appears to have been around for a while, too… How can you avoid combing through the entire history?</content>
  </entry>  <entry>
    <title>How to make Git preserve specific files while merging</title>
    <link href="https://comprendre-git.com/en/protips/how-to-make-git-preserve-specific-files-while-merging/" />
    <updated>2014-11-28T00:00:00Z</updated>
    <id>https://comprendre-git.com/en/protips/how-to-make-git-preserve-specific-files-while-merging/</id>
    <content xml:lang="en" type="html">Oh boy, are branches great. They let you have entirely different versions of a given file, depending on the context. The thing is, in a few (not so rare) situations, you may want to version a file that changes from branch to branch, but retain its current content when merging another branch into yours.</content>
  </entry>  <entry>
    <title>Fix conflicts only once with git rerere</title>
    <link href="https://comprendre-git.com/en/protips/git-rerere/" />
    <updated>2014-11-04T00:00:00Z</updated>
    <id>https://comprendre-git.com/en/protips/git-rerere/</id>
    <content xml:lang="en" type="html">So you fixed a conflict somewhere in your repo, then later stumbled on exactly the same one (perhaps you did another merge, or ended up rebasing instead, or cherry-picked the faulty commit elsewhere…). And bang, you had to fix that same conflict again. That sucks.</content>
  </entry>  <entry>
    <title>30 Git CLI options you should know about</title>
    <link href="https://comprendre-git.com/en/protips/30-git-cli-options-you-should-know-about/" />
    <updated>2014-09-15T00:00:00Z</updated>
    <id>https://comprendre-git.com/en/protips/30-git-cli-options-you-should-know-about/</id>
    <content xml:lang="en" type="html">You think you know Git? Maybe you do… And yet, I’d bet my shirt that many cool little command-line options remain unknown to you.</content>
  </entry>  <entry>
    <title>What’s new since Git 1.7</title>
    <link href="https://comprendre-git.com/en/archives/whats-new-since-git-1-7/" />
    <updated>2014-08-28T00:00:00Z</updated>
    <id>https://comprendre-git.com/en/archives/whats-new-since-git-1-7/</id>
    <content xml:lang="en" type="html">A lot of people use Git without quite tracking what’s coming up in later releases. Sometimes you just go with whatever’s available on your Linux distro, even if that is quite outdated.</content>
  </entry>  <entry>
    <title>Getting solid at Git rebase vs. merge</title>
    <link href="https://comprendre-git.com/en/commands/getting-solid-at-git-rebase-vs-merge/" />
    <updated>2014-05-04T00:00:00Z</updated>
    <id>https://comprendre-git.com/en/commands/getting-solid-at-git-rebase-vs-merge/</id>
    <content xml:lang="en" type="html">Each one is best for specific purposes, so learn when to use them efficiently, and why.</content>
  </entry>  <entry>
    <title>A well-honed Git configuration</title>
    <link href="https://comprendre-git.com/en/archives/git-configuration/" />
    <updated>2013-04-03T00:00:00Z</updated>
    <id>https://comprendre-git.com/en/archives/git-configuration/</id>
    <content xml:lang="en" type="html">Detailed overview of must-have settings for efficiently using Git everyday.  A must-read.</content>
  </entry></feed>
