\input texinfo @c -*-texinfo-*- @c %**start of header @setfilename using-git.info @settitle using git @afourpaper @documentencoding UTF-8 @documentlanguage en @finalout @c %**end of header @dircategory Version Control @direntry * using git: (using git). Using the Git source control management @end direntry @copying Copyright @copyright{} 2013 Mattias Andrée @quotation Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the license is included in the section entitled ``GNU Free Documentation License''. @end quotation @end copying @ifnottex @node Top @top Using Git @insertcopying @end ifnottex @titlepage @title Using Git @author by Mattias Andrée (maandree) @page @vskip 0pt plus 1filll @insertcopying @end titlepage @contents @menu * Getting started:: * GNU Free Documentation License:: @end menu @node Getting started @chapter Getting started @menu * Create a repository:: * Create an origin:: @end menu @node Create a repository @section Create a repository A repository is a directory under source control, normally your project you are working on. Create an empty directory and @command{cd} into it: @example mkdir MY_PROJECT cd MY_PROJECT @end example When you are inside the directory for the repository issus the git command to initialise the repository: @example git init @end example This command creates a directory namend @file{.git} inside the directory with all data git requires to operate on the repository. The next thing you want to do is to create a @file{.gitignore} file, it is used to keep track of with files that should be be included in the repository, unless overruled with a forced staging. A good base @file{.gitignore} content you probably always want to use is: @example _/ # It is a good idea to allow the directory _ to # contain temporary file you do not whant to stage. .* # Generally you probably do not want to include # hidden files. !.git* # But you do generally want to include files starting with .git, such as .gitignore. \#*\# *~ *.bak # And you do not want to include backup files. @end example Git parses @file{.gitignore} with wildcards, @code{#} for comments and @code{!} for inclusion rather than exclusion, latter entires override earlier entries. When you have create you @file{.gitignore} you are ready to stage it and make your first commit: @example git add .gitignore git commit -n 'first commit' @end example @node Create an origin @section Create an origin It is a good idea to create a backup repostory, so you do not lose your work on a disc failure, filesystem corruption accidental removal. You can such repostory for allowing collaboration with a command repository that the collaborators can all submit and fetch commits from. This repository is customarly called `origin'. And it is a bare repository, meaning that it only hold the data in the @file{.git} directory and cannot be used as the working directory. @example mkcd -p /srv/git/MY_REPOSITORY.git cd /srv/git/MY_REPOSITORY.git git init --bare cd - # Go back to your project respository git remote add origin file:///srv/git/MY_REPOSITORY.git git push -u orgin master # master is the bransh you are working in @end example It is standard to append @file{.git} to the end of the repository name when it is bare. To submit your changes to origin you can now use the command @command{git push}. To fetch updates others have made, use the command @command{git pull}. @node GNU Free Documentation License @appendix GNU Free Documentation License @include fdl.texinfo @bye