<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>Git Cookbook</title><link href="https://git.seveas.net/" rel="alternate"></link><link href="https://git.seveas.net/feeds/atom.xml" rel="self"></link><id>https://git.seveas.net/</id><updated>2016-08-17T00:00:00+02:00</updated><entry><title>Git and configuration files</title><link href="https://git.seveas.net/git-and-configuration-files.html" rel="alternate"></link><updated>2016-08-17T00:00:00+02:00</updated><author><name>Dennis Kaarsemaker</name></author><id>tag:git.seveas.net,2016-08-17:git-and-configuration-files.html</id><summary type="html">&lt;p&gt;How do you keep local changes to the configuration files in your
project's repository? Should you use &lt;code&gt;update-index&lt;/code&gt;, or is there a better
way to ignore local changes. None of that nonsense, your configuration
files do not belong there and in this article I'll show you why, and what
alternatives there are for your configuration files.&lt;/p&gt;</summary><category term="configuration"></category></entry><entry><title>Describing the relationship between commits</title><link href="https://git.seveas.net/describing-the-relationship-between-commits.html" rel="alternate"></link><updated>2016-03-20T00:00:00+01:00</updated><author><name>Dennis Kaarsemaker</name></author><id>tag:git.seveas.net,2016-03-20:describing-the-relationship-between-commits.html</id><summary type="html">&lt;p&gt;Unless you have only one commit in your repository, no commit stands
on it own and all commits can be related to each other. These relationships
can be described in multiple ways, from exact revision walking paths to a
vague 'are these commits even related'?&lt;/p&gt;</summary><category term="hooks"></category><category term="describe"></category><category term="ancestor"></category><category term="merge-base"></category><category term="branch"></category><category term="rev-parse"></category></entry><entry><title>Undoing all kinds of mistakes</title><link href="https://git.seveas.net/undoing-all-kinds-of-mistakes.html" rel="alternate"></link><updated>2016-03-20T00:00:00+01:00</updated><author><name>Dennis Kaarsemaker</name></author><id>tag:git.seveas.net,2016-03-20:undoing-all-kinds-of-mistakes.html</id><summary type="html">&lt;p&gt;Git understands that humans are not perfect, and that often we want to
change our minds about what we did. To help with this, git offers many
tools to undo our changes and even change history. The trick is knowing
when to use which tool.&lt;/p&gt;</summary><category term="checkout"></category><category term="reset"></category><category term="rebase"></category><category term="rewrite"></category><category term="undo"></category><category term="stash"></category></entry><entry><title>Quickly seeing the age of your branches</title><link href="https://git.seveas.net/quickly-seeing-the-age-of-your-branches.html" rel="alternate"></link><updated>2015-12-12T00:00:00+01:00</updated><author><name>Dennis Kaarsemaker</name></author><id>tag:git.seveas.net,2015-12-12:quickly-seeing-the-age-of-your-branches.html</id><summary type="html">&lt;p&gt;Want to know how old all your branches are? You can of course browse
your logs, but git can tell you what you want to know in one command
(if you're willing to call some shell golfing a single command)&lt;/p&gt;</summary><category term="plumbing"></category><category term="for-each-ref"></category><category term="merge-base"></category><category term="log"></category><category term="branch"></category></entry><entry><title>Repairing and recovering broken git repositories</title><link href="https://git.seveas.net/repairing-and-recovering-broken-git-repositories.html" rel="alternate"></link><updated>2015-12-08T00:00:00+01:00</updated><author><name>Dennis Kaarsemaker</name></author><id>tag:git.seveas.net,2015-12-08:repairing-and-recovering-broken-git-repositories.html</id><summary type="html">&lt;p&gt;Git tries very hard not to forget anything you have ever committed,
but that only works as long as your .git directory is intact. What do you
do if it gets corrupted? Many parts of it can be recovered and in this
article we find out how to do this.&lt;/p&gt;</summary><category term="corruption"></category><category term="recovery"></category><category term="reflog"></category></entry><entry><title>How to back up a git repository</title><link href="https://git.seveas.net/how-to-back-up-a-git-repository.html" rel="alternate"></link><updated>2015-12-07T00:00:00+01:00</updated><author><name>Dennis Kaarsemaker</name></author><id>tag:git.seveas.net,2015-12-07:how-to-back-up-a-git-repository.html</id><summary type="html">&lt;p&gt;Backing up a git repository isn't as simple as cloning it, even
creating tarballs may not be good enough for backing up. And if you think
rsync has got you covered, think again! Let's explore some backup methods
and how to break their assumptions with git. Of course we also explain how
to correctly back up a git repository.&lt;/p&gt;</summary><category term="backup"></category></entry><entry><title>Previewing a merge result</title><link href="https://git.seveas.net/previewing-a-merge-result.html" rel="alternate"></link><updated>2015-12-07T00:00:00+01:00</updated><author><name>Dennis Kaarsemaker</name></author><id>tag:git.seveas.net,2015-12-07:previewing-a-merge-result.html</id><summary type="html">&lt;p&gt;Can you preview what the result of a merge would look like? Sort of, here you can learn how.&lt;/p&gt;</summary><category term="merge"></category><category term="diff"></category></entry><entry><title>Rebasing illustrated</title><link href="https://git.seveas.net/rebasing-illustrated.html" rel="alternate"></link><updated>2015-11-18T00:00:00+01:00</updated><author><name>Dennis Kaarsemaker</name></author><id>tag:git.seveas.net,2015-11-18:rebasing-illustrated.html</id><summary type="html">&lt;p&gt;We dive into the &lt;code&gt;git rebase&lt;/code&gt; command and take away all the fear around it.&lt;/p&gt;</summary><category term="rebase"></category><category term="rewrite"></category></entry><entry><title>Extending git's bash completion for your own commands</title><link href="https://git.seveas.net/extending-gits-bash-completion-for-your-own-commands.html" rel="alternate"></link><updated>2015-11-08T00:00:00+01:00</updated><author><name>Dennis Kaarsemaker</name></author><id>tag:git.seveas.net,2015-11-08:extending-gits-bash-completion-for-your-own-commands.html</id><summary type="html">&lt;p&gt;Git has pretty decent and extensible bash completion. We'll teach you how to extend this completion for your own git subcommands.&lt;/p&gt;</summary><category term="bash"></category></entry><entry><title>Deleting branches that have been merged</title><link href="https://git.seveas.net/deleting-branches-that-have-been-merged.html" rel="alternate"></link><updated>2015-11-07T00:00:00+01:00</updated><author><name>Dennis Kaarsemaker</name></author><id>tag:git.seveas.net,2015-11-07:deleting-branches-that-have-been-merged.html</id><summary type="html">&lt;p&gt;Learn how to to find branches that have been merged into your main branch and how to delete them.&lt;/p&gt;</summary><category term="branch"></category><category term="remote"></category></entry><entry><title>Getting rid of submodules</title><link href="https://git.seveas.net/getting-rid-of-submodules.html" rel="alternate"></link><updated>2015-11-07T00:00:00+01:00</updated><author><name>Dennis Kaarsemaker</name></author><id>tag:git.seveas.net,2015-11-07:getting-rid-of-submodules.html</id><summary type="html">&lt;p&gt;Getting rid of submodules is as cumbersome as any submodule operation. So let's have no more of it and delete some submodules.&lt;/p&gt;</summary><category term="submodules"></category></entry><entry><title>The meaning of refs and refspecs</title><link href="https://git.seveas.net/the-meaning-of-refs-and-refspecs.html" rel="alternate"></link><updated>2015-11-07T00:00:00+01:00</updated><author><name>Dennis Kaarsemaker</name></author><id>tag:git.seveas.net,2015-11-07:the-meaning-of-refs-and-refspecs.html</id><summary type="html">&lt;p&gt;Refs are one of git's core concepts. Learn here about all the
different types of refs (many more than just tags and branches) and how
they differ from each other.&lt;/p&gt;</summary><category term="refs"></category><category term="branch"></category><category term="tag"></category><category term="remote"></category><category term="github"></category><category term="pull-request"></category><category term="notes"></category><category term="gerrit"></category><category term="bisect"></category><category term="merge"></category><category term="filter-branch"></category><category term="replace"></category><category term="stash"></category></entry><entry><title>Recovering from a detached head</title><link href="https://git.seveas.net/recovering-from-a-detached-head.html" rel="alternate"></link><updated>2015-11-05T00:00:00+01:00</updated><author><name>Dennis Kaarsemaker</name></author><id>tag:git.seveas.net,2015-11-05:recovering-from-a-detached-head.html</id><summary type="html">&lt;p&gt;Unlike in real life, a detached head is pretty common in git. Find out
how you can get into this situation and how to recover from it.&lt;/p&gt;</summary><category term="checkout"></category><category term="branch"></category><category term="bisect"></category><category term="submodules"></category><category term="refs"></category></entry><entry><title>Removing unwanted data from git repositories</title><link href="https://git.seveas.net/removing-unwanted-data-from-git-repositories.html" rel="alternate"></link><updated>2015-11-05T00:00:00+01:00</updated><author><name>Dennis Kaarsemaker</name></author><id>tag:git.seveas.net,2015-11-05:removing-unwanted-data-from-git-repositories.html</id><summary type="html">&lt;p&gt;Ever committed something very large or sensitive? Find out how you can remove it from your repository.&lt;/p&gt;</summary><category term="filter-branch"></category><category term="bfg"></category><category term="cleanup"></category><category term="rewrite"></category></entry><entry><title>Simple deployments with git</title><link href="https://git.seveas.net/simple-deployments-with-git.html" rel="alternate"></link><updated>2015-11-05T00:00:00+01:00</updated><author><name>Dennis Kaarsemaker</name></author><id>tag:git.seveas.net,2015-11-05:simple-deployments-with-git.html</id><summary type="html">&lt;p&gt;While git is not a deployment tool, many people (attempt to) use it as
one. So here are some recipes for doing deployments with git hooks in a
safe and sane way.&lt;/p&gt;</summary><category term="hooks"></category><category term="post-receive"></category><category term="deploy"></category></entry><entry><title>Always using the latest and greatest git</title><link href="https://git.seveas.net/always-using-the-latest-and-greatest-git.html" rel="alternate"></link><updated>2015-11-04T00:00:00+01:00</updated><author><name>Dennis Kaarsemaker</name></author><id>tag:git.seveas.net,2015-11-04:always-using-the-latest-and-greatest-git.html</id><summary type="html">&lt;p&gt;Help testing Git development by using packages that integrate with
Ubuntu, Debian CentOS and Fedora.&lt;/p&gt;</summary><category term="next"></category><category term="install"></category></entry><entry><title>Dealing with misconfigured https repositories</title><link href="https://git.seveas.net/dealing-with-misconfigured-https-repositories.html" rel="alternate"></link><updated>2015-11-04T00:00:00+01:00</updated><author><name>Dennis Kaarsemaker</name></author><id>tag:git.seveas.net,2015-11-04:dealing-with-misconfigured-https-repositories.html</id><summary type="html">&lt;p&gt;You should never have to disable SSL verification, but sometimes you
do not control the host you must get some data from. If you must do so,
learn here how to do this without firther compromising your security.&lt;/p&gt;</summary><category term="http"></category><category term="https"></category><category term="danger"></category></entry><entry><title>Using credential helpers to cache passwords</title><link href="https://git.seveas.net/using-credential-helpers-to-cache-passwords.html" rel="alternate"></link><updated>2015-11-04T00:00:00+01:00</updated><author><name>Dennis Kaarsemaker</name></author><id>tag:git.seveas.net,2015-11-04:using-credential-helpers-to-cache-passwords.html</id><summary type="html">&lt;p&gt;Never type your passwords again, but store them safely in a password manager Git can use.&lt;/p&gt;</summary><category term="authentication"></category><category term="http"></category></entry><entry><title>Serving git's smart http protocol and a web interface with Apache</title><link href="https://git.seveas.net/apache-gitweb-cgit-smart-http.html" rel="alternate"></link><updated>2015-11-03T00:00:00+01:00</updated><author><name>Dennis Kaarsemaker</name></author><id>tag:git.seveas.net,2015-11-03:apache-gitweb-cgit-smart-http.html</id><summary type="html">&lt;p&gt;From zero to fully working web server in 2 configuration files, including smart HTTP, ssl, authentication, and cgit or gitweb.&lt;/p&gt;</summary><category term="apache"></category><category term="server"></category><category term="gitweb"></category><category term="cgit"></category><category term="http"></category><category term="https"></category><category term="authentication"></category></entry><entry><title>Using multiple post-receive hooks</title><link href="https://git.seveas.net/using-multiple-post-receive-hooks.html" rel="alternate"></link><updated>2015-11-03T00:00:00+01:00</updated><author><name>Dennis Kaarsemaker</name></author><id>tag:git.seveas.net,2015-11-03:using-multiple-post-receive-hooks.html</id><summary type="html">&lt;p&gt;Workaround for a common pitfall for some git hooks: consuming all input.&lt;/p&gt;</summary><category term="hooks"></category><category term="post-receive"></category></entry><entry><title>Showing all branches and their relationships</title><link href="https://git.seveas.net/showing-all-branches-and-their-relationships.html" rel="alternate"></link><updated>2015-11-01T00:00:00+01:00</updated><author><name>Dennis Kaarsemaker</name></author><id>tag:git.seveas.net,2015-11-01:showing-all-branches-and-their-relationships.html</id><summary type="html">&lt;p&gt;You don't need a graphical interface to see all your branches and their relationships.&lt;/p&gt;</summary><category term="log"></category><category term="branch"></category></entry></feed>