<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Git Cookbook</title><link>https://git.seveas.net/</link><description></description><atom:link href="https://git.seveas.net/feeds/rss.xml" rel="self"></atom:link><lastBuildDate>Wed, 17 Aug 2016 00:00:00 +0200</lastBuildDate><item><title>Git and configuration files</title><link>https://git.seveas.net/git-and-configuration-files.html</link><description>&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;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Dennis Kaarsemaker</dc:creator><pubDate>Wed, 17 Aug 2016 00:00:00 +0200</pubDate><guid>tag:git.seveas.net,2016-08-17:git-and-configuration-files.html</guid><category>configuration</category></item><item><title>Describing the relationship between commits</title><link>https://git.seveas.net/describing-the-relationship-between-commits.html</link><description>&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;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Dennis Kaarsemaker</dc:creator><pubDate>Sun, 20 Mar 2016 00:00:00 +0100</pubDate><guid>tag:git.seveas.net,2016-03-20:describing-the-relationship-between-commits.html</guid><category>hooks</category><category>describe</category><category>ancestor</category><category>merge-base</category><category>branch</category><category>rev-parse</category></item><item><title>Undoing all kinds of mistakes</title><link>https://git.seveas.net/undoing-all-kinds-of-mistakes.html</link><description>&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;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Dennis Kaarsemaker</dc:creator><pubDate>Sun, 20 Mar 2016 00:00:00 +0100</pubDate><guid>tag:git.seveas.net,2016-03-20:undoing-all-kinds-of-mistakes.html</guid><category>checkout</category><category>reset</category><category>rebase</category><category>rewrite</category><category>undo</category><category>stash</category></item><item><title>Quickly seeing the age of your branches</title><link>https://git.seveas.net/quickly-seeing-the-age-of-your-branches.html</link><description>&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;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Dennis Kaarsemaker</dc:creator><pubDate>Sat, 12 Dec 2015 00:00:00 +0100</pubDate><guid>tag:git.seveas.net,2015-12-12:quickly-seeing-the-age-of-your-branches.html</guid><category>plumbing</category><category>for-each-ref</category><category>merge-base</category><category>log</category><category>branch</category></item><item><title>Repairing and recovering broken git repositories</title><link>https://git.seveas.net/repairing-and-recovering-broken-git-repositories.html</link><description>&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;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Dennis Kaarsemaker</dc:creator><pubDate>Tue, 08 Dec 2015 00:00:00 +0100</pubDate><guid>tag:git.seveas.net,2015-12-08:repairing-and-recovering-broken-git-repositories.html</guid><category>corruption</category><category>recovery</category><category>reflog</category></item><item><title>How to back up a git repository</title><link>https://git.seveas.net/how-to-back-up-a-git-repository.html</link><description>&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;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Dennis Kaarsemaker</dc:creator><pubDate>Mon, 07 Dec 2015 00:00:00 +0100</pubDate><guid>tag:git.seveas.net,2015-12-07:how-to-back-up-a-git-repository.html</guid><category>backup</category></item><item><title>Previewing a merge result</title><link>https://git.seveas.net/previewing-a-merge-result.html</link><description>&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;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Dennis Kaarsemaker</dc:creator><pubDate>Mon, 07 Dec 2015 00:00:00 +0100</pubDate><guid>tag:git.seveas.net,2015-12-07:previewing-a-merge-result.html</guid><category>merge</category><category>diff</category></item><item><title>Rebasing illustrated</title><link>https://git.seveas.net/rebasing-illustrated.html</link><description>&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;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Dennis Kaarsemaker</dc:creator><pubDate>Wed, 18 Nov 2015 00:00:00 +0100</pubDate><guid>tag:git.seveas.net,2015-11-18:rebasing-illustrated.html</guid><category>rebase</category><category>rewrite</category></item><item><title>Extending git's bash completion for your own commands</title><link>https://git.seveas.net/extending-gits-bash-completion-for-your-own-commands.html</link><description>&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;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Dennis Kaarsemaker</dc:creator><pubDate>Sun, 08 Nov 2015 00:00:00 +0100</pubDate><guid>tag:git.seveas.net,2015-11-08:extending-gits-bash-completion-for-your-own-commands.html</guid><category>bash</category></item><item><title>Deleting branches that have been merged</title><link>https://git.seveas.net/deleting-branches-that-have-been-merged.html</link><description>&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;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Dennis Kaarsemaker</dc:creator><pubDate>Sat, 07 Nov 2015 00:00:00 +0100</pubDate><guid>tag:git.seveas.net,2015-11-07:deleting-branches-that-have-been-merged.html</guid><category>branch</category><category>remote</category></item><item><title>Getting rid of submodules</title><link>https://git.seveas.net/getting-rid-of-submodules.html</link><description>&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;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Dennis Kaarsemaker</dc:creator><pubDate>Sat, 07 Nov 2015 00:00:00 +0100</pubDate><guid>tag:git.seveas.net,2015-11-07:getting-rid-of-submodules.html</guid><category>submodules</category></item><item><title>The meaning of refs and refspecs</title><link>https://git.seveas.net/the-meaning-of-refs-and-refspecs.html</link><description>&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;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Dennis Kaarsemaker</dc:creator><pubDate>Sat, 07 Nov 2015 00:00:00 +0100</pubDate><guid>tag:git.seveas.net,2015-11-07:the-meaning-of-refs-and-refspecs.html</guid><category>refs</category><category>branch</category><category>tag</category><category>remote</category><category>github</category><category>pull-request</category><category>notes</category><category>gerrit</category><category>bisect</category><category>merge</category><category>filter-branch</category><category>replace</category><category>stash</category></item><item><title>Recovering from a detached head</title><link>https://git.seveas.net/recovering-from-a-detached-head.html</link><description>&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;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Dennis Kaarsemaker</dc:creator><pubDate>Thu, 05 Nov 2015 00:00:00 +0100</pubDate><guid>tag:git.seveas.net,2015-11-05:recovering-from-a-detached-head.html</guid><category>checkout</category><category>branch</category><category>bisect</category><category>submodules</category><category>refs</category></item><item><title>Removing unwanted data from git repositories</title><link>https://git.seveas.net/removing-unwanted-data-from-git-repositories.html</link><description>&lt;p&gt;Ever committed something very large or sensitive? Find out how you can remove it from your repository.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Dennis Kaarsemaker</dc:creator><pubDate>Thu, 05 Nov 2015 00:00:00 +0100</pubDate><guid>tag:git.seveas.net,2015-11-05:removing-unwanted-data-from-git-repositories.html</guid><category>filter-branch</category><category>bfg</category><category>cleanup</category><category>rewrite</category></item><item><title>Simple deployments with git</title><link>https://git.seveas.net/simple-deployments-with-git.html</link><description>&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;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Dennis Kaarsemaker</dc:creator><pubDate>Thu, 05 Nov 2015 00:00:00 +0100</pubDate><guid>tag:git.seveas.net,2015-11-05:simple-deployments-with-git.html</guid><category>hooks</category><category>post-receive</category><category>deploy</category></item><item><title>Always using the latest and greatest git</title><link>https://git.seveas.net/always-using-the-latest-and-greatest-git.html</link><description>&lt;p&gt;Help testing Git development by using packages that integrate with
Ubuntu, Debian CentOS and Fedora.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Dennis Kaarsemaker</dc:creator><pubDate>Wed, 04 Nov 2015 00:00:00 +0100</pubDate><guid>tag:git.seveas.net,2015-11-04:always-using-the-latest-and-greatest-git.html</guid><category>next</category><category>install</category></item><item><title>Dealing with misconfigured https repositories</title><link>https://git.seveas.net/dealing-with-misconfigured-https-repositories.html</link><description>&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;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Dennis Kaarsemaker</dc:creator><pubDate>Wed, 04 Nov 2015 00:00:00 +0100</pubDate><guid>tag:git.seveas.net,2015-11-04:dealing-with-misconfigured-https-repositories.html</guid><category>http</category><category>https</category><category>danger</category></item><item><title>Using credential helpers to cache passwords</title><link>https://git.seveas.net/using-credential-helpers-to-cache-passwords.html</link><description>&lt;p&gt;Never type your passwords again, but store them safely in a password manager Git can use.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Dennis Kaarsemaker</dc:creator><pubDate>Wed, 04 Nov 2015 00:00:00 +0100</pubDate><guid>tag:git.seveas.net,2015-11-04:using-credential-helpers-to-cache-passwords.html</guid><category>authentication</category><category>http</category></item><item><title>Serving git's smart http protocol and a web interface with Apache</title><link>https://git.seveas.net/apache-gitweb-cgit-smart-http.html</link><description>&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;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Dennis Kaarsemaker</dc:creator><pubDate>Tue, 03 Nov 2015 00:00:00 +0100</pubDate><guid>tag:git.seveas.net,2015-11-03:apache-gitweb-cgit-smart-http.html</guid><category>apache</category><category>server</category><category>gitweb</category><category>cgit</category><category>http</category><category>https</category><category>authentication</category></item><item><title>Using multiple post-receive hooks</title><link>https://git.seveas.net/using-multiple-post-receive-hooks.html</link><description>&lt;p&gt;Workaround for a common pitfall for some git hooks: consuming all input.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Dennis Kaarsemaker</dc:creator><pubDate>Tue, 03 Nov 2015 00:00:00 +0100</pubDate><guid>tag:git.seveas.net,2015-11-03:using-multiple-post-receive-hooks.html</guid><category>hooks</category><category>post-receive</category></item><item><title>Showing all branches and their relationships</title><link>https://git.seveas.net/showing-all-branches-and-their-relationships.html</link><description>&lt;p&gt;You don't need a graphical interface to see all your branches and their relationships.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Dennis Kaarsemaker</dc:creator><pubDate>Sun, 01 Nov 2015 00:00:00 +0100</pubDate><guid>tag:git.seveas.net,2015-11-01:showing-all-branches-and-their-relationships.html</guid><category>log</category><category>branch</category></item></channel></rss>