A successful Git branching model » nvie.com In this post I present the development model that I’ve introduced for some of my projects (both at work and private) about a year ago, and which has turned out to be very successful. I’ve been meaning to write about it for a while now, but I’ve never really found the time to do so thoroughly, until now. I won’t talk about any of the projects’ details, merely about the branching strategy and release management. Why git? ¶ For a thorough discussion on the pros and cons of Git compared to centralized source code control systems, see the web. But with Git, these actions are extremely cheap and simple, and they are considered one of the core parts of your daily workflow, really. As a consequence of its simplicity and repetitive nature, branching and merging are no longer something to be afraid of. Enough about the tools, let’s head onto the development model. Decentralized but centralized ¶ Each developer pulls and pushes to origin. The main branches ¶ masterdevelop Supporting branches ¶ develop
Free Software Project Hosting August 9th, 2009 I asked for suggestions a few days ago. I got several good ones, and investigated them. You can find my original criteria at the link above. Google Code Its very simple interface appeals to me. A big requirement of mine is being able to upload tarballs or ZIP files from the command line in an automated fashion. URL: googlecode.com Gitorious Gitorious is one of the two Git-based sites that put a strong emphasis on community. The downside of Gitorious or Github is that they tie me to Git. Gitorious fails several of my requirements, though. It can spontaneously create a tar.gz file from the head of any branch, but not a zip file. Potential workarounds include using Lighthouse for bug tracking (they do support git integration for changelog messages) and my own server to host tarballs and ZIP files — which I could trivially upload via scp. URL: gitorious.org Github At first glance, this is a more-powerful version of Gitorious. The issue tracker is nice and simple. URL: github.com
training (The GitHub Training Team) Preface Git is a version control Swiss army knife. A reliable versatile multipurpose revision control tool whose extraordinary flexibility makes it tricky to learn, let alone master. As Arthur C. Clarke observed, any sufficiently advanced technology is indistinguishable from magic. This is a great way to approach Git: newbies can ignore its inner workings and view Git as a gizmo that can amaze friends and infuriate enemies with its wondrous abilities. Rather than go into details, we provide rough instructions for particular effects. I’m humbled that so many people have worked on translations of these pages. Dustin Sallings, Alberto Bertogli, James Cameron, Douglas Livingstone, Michael Budde, Richard Albury, Tarmigan, Derek Mahar, Frode Aannevik, Keith Rarick, Andy Somerville, Ralf Recker, Øyvind A. François Marier maintains the Debian package originally created by Daniel Baumann. John Hinnegan bought the gitmagic.com domain. My gratitude goes to many others for your support and praise.
git - the simple guide - no deep shit! git - the simple guide just a simple guide for getting started with git. no deep shit ;) by Roger Dudler credits to @tfnico, @fhd and Namics this guide in deutsch, español, français, indonesian, italiano, nederlands, polski, português, русский, türkçe, မြန်မာ, 日本語, 中文, 한국어 Vietnamese please report issues on github Drive deeper customer connections with Mailchimp's marketing CRM.ads via Carbon setup Download git for OSX Download git for Windows Download git for Linux create a new repository create a new directory, open it and perform a git init to create a new git repository. checkout a repository create a working copy of a local repository by running the command git clone /path/to/repository when using a remote server, your command will be git clone username@host:/path/to/repository workflow add & commit You can propose changes (add it to the Index) using git add <filename> git add * This is the first step in the basic git workflow. pushing changes branching update & merge tagging log useful hints log
Online Git Courses • GitHub Training GitHub & Git Foundations Course Our Foundations class helps you, as a newcomer to GitHub and Git, fully grasp the concepts and application of distributed version control so that you can effectively begin using this productivity-enhancing suite of tools. During this live training course, we’ll explore the foundations of GitHub and Git through practical every-day commands and processes. We’ll conclude with workflow ideas and practical tips that will get you on the road to mastery of this revolutionary version control system. Topics Introductions Git and your initial setup Git configuration and its inheritance Your first repository Understanding and thinking in Git's three stages Adding, committing, and diff-ing code changes The Similarity Index; Moving, Renaming, and Removing files Reviewing version history in Git Strategies for efficiency Managing and using Git Remotes Branching, Tagging, and Stashing Merging, Rebasing, and managing conflicts Undoing your work with Git Objectives
I pushed 30 of my projects to GitHub Hey everyone, I just pushed 30 of my projects to GitHub. I realized that all the projects were scattered across my blog and there was no central repository. So I took time to organize them, write documentation, and uploaded them to GitHub. I did all of these projects for fun and to learn better programming. These were all relatively small projects and I think I am ready to move to the next level. If you find any of my projects interesting, clone and start hacking. Here they all are. 1. Busy beaver is a computer science problem to finding the smallest Turing Machine that outputs the most data and eventually halts. 2. Current Feedburner statistics graphs do not look nice. 3. This is a Perl program that parses public statcounter data for codinghorror.com blog and stores the search keywords in an SQLite database. 4. This is a tiny Python module that does asynchronous DNS resolution with adns library. 5. 6. Bithacks.h is a C header file that implements various bit operations. 7. 8. 9. 10. 11.
Git for Computer Scientists Abstract Quick introduction to git internals for people who are not scared by words like Directed Acyclic Graph. Storage In simplified form, git object storage is "just" a DAG of objects, with a handful of different types of objects. They are all stored compressed and identified by an SHA-1 hash (that, incidentally, isn't the SHA-1 of the contents of the file they represent, but of their representation in git). blob: The simplest object, just a bunch of bytes. tree: Directories are represented by tree object. When a node points to another node in the DAG, it depends on the other node: it cannot exist without it. commit: A commit refers to a tree that represents the state of the files at the time of the commit. refs: References, or heads or branches, are like post-it notes slapped on a node in the DAG. git commit adds a node to the DAG and moves the post-it note for current branch to this new node. The HEAD ref is special in that it actually points to another ref. History
Git for the lazy - Spheriki From Spheriki Git is a distributed version control system . No, you don't need to know what that means to use this guide. Think of it as a time machine: Subversion or CVS without the cruft. If you make a lot of changes, but decided you made a mistake, this will save your butt. This guide is for people who want to jump to any point in time with their project/game/whatever, and want something to use for themselves. Windows For Windows, you have two options: msysGit Download and install msysGit to use Git in Windows's cmd.exe console. Cygwin Download Cygwin . Put setup.exe in a folder of its own in your documents. Launch setup.exe . While installing Cygwin, pick these packages: from the DEVEL category (if you're wimpy) or (if you know it), both in the EDITORS category You'll now have a shortcut to launch Cygwin, which brings up something like the Linux terminal. Linux Install the git package using your preferred method (package manager or from source). Fire up your Cygwin/Linux terminal, and type: git init
Generating SSH Keys SSH keys are a way to identify trusted computers, without involving passwords. The steps below will walk you through generating an SSH key and adding the public key to your GitHub account. We recommend that you regularly review your SSH keys list and revoke any that haven't been used in a while. Tip: GitHub has a desktop client! Tip: If you have GitHub for Windows installed, you can use it to clone repositories and not deal with SSH keys. Step 1: Check for SSH keys First, we need to check for existing SSH keys on your computer. ls -al ~/.ssh# Lists the files in your .ssh directory, if they exist Check the directory listing to see if you already have a public SSH key. id_dsa.pubid_ecdsa.pubid_ed25519.pubid_rsa.pub If you see an existing public and private key pair listed (for example id_rsa.pub and id_rsa) that you would like to use to connect to GitHub, you can skip Step 2 and go straight to Step 3. Tip: If you receive an error that ~/.ssh doesn't exist, don't worry!
Git merge.conflictstyle Specify the style in which conflicted hunks are written out to working tree files upon merge. The default is "merge", which shows a <<<<<<< conflict marker, changes made by one side, a ======= marker, changes made by the other side, and then a >>>>>>> marker. An alternate style, "diff3", adds a ||||||| marker and the original text before the ======= marker. merge.defaultToUpstream If merge is called without any commit argument, merge the upstream branches configured for the current branch by using their last observed values stored in their remote-tracking branches. merge.ff By default, Git does not create an extra merge commit when merging a commit that is a descendant of the current commit. merge.log In addition to branch names, populate the log message with at most the specified number of one-line descriptions from the actual commits that are being merged. merge.renameLimit merge.renormalize merge.stat merge.tool Controls which merge tool is used by git-mergetool(1).
Preface Git is a version control Swiss army knife. A reliable versatile multipurpose revision control tool whose extraordinary flexibility makes it tricky to learn, let alone master. As Arthur C. Rather than go into details, we provide rough instructions for particular effects. I’m humbled that so many people have worked on translations of these pages. Dustin Sallings, Alberto Bertogli, James Cameron, Douglas Livingstone, Michael Budde, Richard Albury, Tarmigan, Derek Mahar, Frode Aannevik, Keith Rarick, Andy Somerville, Ralf Recker, Øyvind A. François Marier maintains the Debian package originally created by Daniel Baumann. My gratitude goes to many others for your support and praise. If I’ve left you out by mistake, please tell me or just send me a patch! This guide is released under the GNU General Public License version 3. $ git clone # Creates "gitmagic" directory. or from one of the mirrors:
Git SCM Wiki