Fundamentals of Git   Chattanooga PHP Developers         December 7, 2010
Our Sponsors
What is Git?Git is a distributed version control systemInitia"y designed and developed by Linus Torvalds toserve as the so...
Licensing and Availability Git is open-source Links to the source code repository as we" as binaries for a number of Linux...
Dependenciescurlzlibopensslexpatlibiconvrsync
Documentation and Resources Documentation on Git is readily available om a number of sources:•   Git Internals: Source cod...
Git Web ReferencesGit Manual (included as part of the Git package): http://www.kernel.org/pub/so*ware/scm/git/docs/DZone R...
Projects using GitLinux Kernel   Hypertable   QTFedora         jQuery       Ruby on RailsAndroid        Mantis       Samba...
Git hostingGitHub – public hosting site for both open-source projects (ee) andproprietary codebases (fee).Codesion – enter...
What’s unique about Git? Every Git working directory is a fu"-fledged repository with a complete version control history an...
Snapshots vs. ChangesUnlike traditional centralized version control systems thattrack changes to individual files, Git trac...
Example                        Checkins over timeVersion 1   Version 2        Version 3   Version 4     Version 5 File A  ...
Three Components of a Git Project Each Git project wi" have three components: • the Git directory: the metadata and object...
The Three States of Files Each file in a Git project is in one of three states• Modified: A file has been changed but has not...
Basic Git WorkflowFiles are modified in the working directoryAs work progresses, files are “staged” – snapshots of themare ad...
Configuring Git SetupGit comes with a tool (git config) that lets you get and set configuration variablesfor GitThese variabl...
Setting Your IdentityYou should set your username and email address a*er insta"ing Git --this information wi" be used to i...
Configuring Your ToolsGit lets you configure the default editor used for messages,and the diff tool used to resolve conflicts:...
Checking Your SettingsYou can check your configuration settings with:• git config --listYou may see keys listed more than on...
Starting a Git ProjectYou can start a project in Git using one of twoapproaches:• Import an existing project into a new Gi...
Setting up a New Repository Create a directory for your project (this wi" be your working directory) Change to your projec...
Cloning an Existing Repository To clone an existing repository, you need to know the URL where the repository is located (...
Basic Commandsgit init               Initializes a Git repository for a new projectgit add <filename>     Add a file to th...
Basic Commandsgit rm <filename>   Remove a file from the project (must be committed)git rm - -cached    Remove a file from...
Basic Commands                         Lists commit entries, along with a list of modified files,git log - - stat         ...
git log -- pretty=format:<options>%H, %h     Commit hash, abbreviated commit hash%T, %t     T hash, abbreviated tree hash ...
Branching and MergingBranching is where Git shinesCreating a branch is incredibly quickSwitching back and forth between br...
Why?In many VCS tools, branching is expensive, o*enrequiring the creation of a new copy of your source codeproject – a len...
Git’s Snapshot ProcessAssume you have three files in the root directory that are part of anew project; You stage and commit...
Git’s Snapshot ProcessYour repository now contains five objects:• Three blobs, one for each file• One tree object containing...
Visual of Repository                     A*er a single commit     HEAD     Master                         Commit I Snapsho...
Changing the ProjectAdding a file, changing one, and committing again creates:• A blob for the new file• A blob for the chan...
Visual of Repository               A*er the second and third commits                                                      ...
Creating a BranchA branch simply creates a moveable pointer to one of thecommit objects stored in the repositoryThe branch...
Creating a New Branch                 Commit 1 Snapshot                 Commit 2 Snapshot  HEAD  Branch1        Commit 3 S...
Status of Your Project              EnvironmentYour working directory contains the same files that itcontained when you wer...
Commit – Branch1              Commit 1 Snapshot              Commit 2 Snapshot              Commit 3 Snapshot       Master...
Status of Your Project             EnvironmentYour working directory contains the files that have beenplaced in the “Commit...
Switch back to Master             Commit 1 Snapshot             Commit 2 Snapshot                                 HEAD    ...
Status of Your Project             EnvironmentYour “HEAD” pointer is now pointing to the “Master”pointerYour working direc...
Create another Branch              Commit 1 Snapshot              Commit 2 Snapshot                                    HEA...
Status of Your Project                 EnvironmentYour working directory files have not changedYou now have a new pointer, ...
Commit – Hotfix1             Commit 1 Snapshot         HEAD             Commit 2 Snapshot         Hotfix1Master       Commit...
Status of Your Project               EnvironmentYou have a new snapshot, “Commit 5 Snapshot”, which has the“Hotfix1” pointe...
Merge Hotfix1 into Master               Commit 1 Snapshot               Commit 2 Snapshot        Hotfix1               Commi...
What happened?When you issue the “git merge” command, you see a message –“fast forward” – in this merge, since the hotfix1 ...
Deleting Hotfix1             Commit 1 Snapshot             Commit 2 Snapshot             Commit 3 Snapshot   Commit 5 Snaps...
Merging Branches with         Diverging HistoryAt this point, “Branch1” and “Master” have divergedThe commands to merge th...
Merging Branch1   Common            Commit 1 Snapshot   Ancestor                                Snapshot to               ...
What happened?Git does a three-way merge, creating a new commit snapshotand a new commit that points to it (Commit 6 Snaps...
Status after Merger                    Commit 1 Snapshot                    Commit 2 Snapshot     Branch1        Commit 3 ...
Merge Conflicts If you change the same part of the same file differently in two branches you are merging together (or if you ...
Resolving ConflictsA*er editing the files with conflicts to resolve the conflict,you run “git add” on each file to mark it as r...
Stashing Your WorkIf you need to switch om your current working state toanother branch, but you’re not yet ready to commit...
Restoring from the Stash To restore a working directory om the stash, run “git stash apply”. Restoring your working direct...
Git Stashgit stash                   Stashes the current working directory on the stackgit stash list              Lists t...
Git on the ServerInsta"ing Git on a server is the same process as insta"ing Giton your local machineGit supports the fo"ow...
Local NetworkGit commands use either the network file path, or file:// for theURLUsing the network file path is slightly fast...
HTTP/SEasy to set up on a web server – place a bare repositoryunder the document root, and set up a specific post-receive h...
Git ProtocolGit comes packaged with a special daemon that supports the git://protocolThe Git daemon by default listens on ...
Secure Shell (SSH)Most commonly used transport protocol for GitOnly network based protocol that supports reading andwritin...
One Caution….If you’re running a git server, you want to keep your git client versionsand your server version as close as ...
Slides Available!This presentation is available on SlideShare, at:http://www.slideshare.net/lhridley/fundamentals-of-git
Upcoming SlideShare
Loading in …5
×

Fundamentals of Git

3,029 views

Published on

An overview of Git, the fast version control system

Published in: Technology
0 Comments
6 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,029
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
147
Comments
0
Likes
6
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Fundamentals of Git

    1. 1. Fundamentals of Git Chattanooga PHP Developers December 7, 2010
    2. 2. Our Sponsors
    3. 3. What is Git?Git is a distributed version control systemInitia"y designed and developed by Linus Torvalds toserve as the source code repository and version controlsystem for the Linux kernelEmphasis is on speed and support for non-lineardevelopment
    4. 4. Licensing and Availability Git is open-source Links to the source code repository as we" as binaries for a number of Linux builds, Windows, Mac OS X and Solaris are available at http://git-scm.com/download Git is also available in a number of Linux repositories as we" as in MacPorts The current version is v 1.7.3.3
    5. 5. Dependenciescurlzlibopensslexpatlibiconvrsync
    6. 6. Documentation and Resources Documentation on Git is readily available om a number of sources:• Git Internals: Source code control and beyond, by Scott Chacon, available as a PDF at http://peepcode.com• Pragmatic Version Control Using Git and Pragmatic Guide to Git by Travis Swicegood, available om Pragmatic Publishers• Version Control with Git by Jon Loeliger, available om O’Rei"y• Git Wiki – user community maintained documentation, available at https://git.wiki.kernal.org
    7. 7. Git Web ReferencesGit Manual (included as part of the Git package): http://www.kernel.org/pub/so*ware/scm/git/docs/DZone Reference card (downloadable for members): http://refcardz.dzone.com/refcardz/getting-started-gitVisual Git Cheat Sheet (in svg and png formats): http://zrusin.blogspot.com/2007/09/git-cheat-sheet.htmlPro Git by Scot Chacon (available in print om Apress):http://progit.org/
    8. 8. Projects using GitLinux Kernel Hypertable QTFedora jQuery Ruby on RailsAndroid Mantis SambaCakePHP Perl SyslinuxDrupal phpMyAdmin WineGCC Prototype Yum
    9. 9. Git hostingGitHub – public hosting site for both open-source projects (ee) andproprietary codebases (fee).Codesion – enterprise hosting and so*ware project managementUnfuddle – ee and paid hosting; also offers so*ware project managementcapabilitiesGitorious – hosting for open source projectsProjectLocker – ee and paid plans integrated with Trac. A" repositoriesare private.Others – see https://git.wiki.kernel.org/index.php/GitHosting
    10. 10. What’s unique about Git? Every Git working directory is a fu"-fledged repository with a complete version control history and tracking capabilities Functionality is not dependent on network access or a centralized server
    11. 11. Snapshots vs. ChangesUnlike traditional centralized version control systems thattrack changes to individual files, Git tracks “snapshots” ofthe repository over time.Every time a “commit” is made, Git makes a snapshot of a" ofthe project file as of that given moment and stores a referenceto that snapshot.• Changed files are stored in their entirety, along with pointers to the latest version of unchanged files
    12. 12. Example Checkins over timeVersion 1 Version 2 Version 3 Version 4 Version 5 File A File A1 File A1 File A2 File A2 File B File B File B File B1 File B1 File C File C1 File C1 File C1 File C1 File D File D File D File D File D1 File E File E File E1 File E1 File E1
    13. 13. Three Components of a Git Project Each Git project wi" have three components: • the Git directory: the metadata and object database for a Git project • the working directory: a single checkout of one version of the project • the staging area: a file containing information about the impending commit
    14. 14. The Three States of Files Each file in a Git project is in one of three states• Modified: A file has been changed but has not been staged or committed• Staged: A file that has been changed and marked to go into the next commit snapshot• Committed: A file has been safely stored in your local data repository
    15. 15. Basic Git WorkflowFiles are modified in the working directoryAs work progresses, files are “staged” – snapshots of themare added to the staging areaA commit is tri.ered – files in the staging area arepermanently stored in a snapshot in the Git directory
    16. 16. Configuring Git SetupGit comes with a tool (git config) that lets you get and set configuration variablesfor GitThese variables can be stored in different localities:• /etc/gitconfig -- values for every user and repository (set by passing the option “--system” to git config)• ~/.gitconfig -- values specific to the lo.ed in user (set by passing the option “--global” to git config)• config file in a project’s git directory -- values specific to a particular project repository (set by running git config inside the working directory without “--system” or “--global”)
    17. 17. Setting Your IdentityYou should set your username and email address a*er insta"ing Git --this information wi" be used to identify your git commits in a gitrepository:• git config --global user.name “Lisa Ridley”• git config --global user.email lisahridley@gmail.com Note: using “--global” stores this information in your user config file; to store project specific commit identification information, use the command without the “--global” option when in that particular project
    18. 18. Configuring Your ToolsGit lets you configure the default editor used for messages,and the diff tool used to resolve conflicts:• git config --global core.editor vim• git config --global merge.tool opendiff
    19. 19. Checking Your SettingsYou can check your configuration settings with:• git config --listYou may see keys listed more than once because git readsthe settings om a" three config files; the last value foreach unique key wi" be used
    20. 20. Starting a Git ProjectYou can start a project in Git using one of twoapproaches:• Import an existing project into a new Git repository• Clone an existing Git repository om another server
    21. 21. Setting up a New Repository Create a directory for your project (this wi" be your working directory) Change to your project directory Issue the “git init” command – this creates a new hidden subdirectory named .git in your project directory that contains your repository files
    22. 22. Cloning an Existing Repository To clone an existing repository, you need to know the URL where the repository is located (local or remote) Issue the command “git clone <url-of-repository>” Examples:• git clone git://github.com/lhridley/PhpTestRepos.git (read only clone)• git clone ssh://git@github.com:lhridley/PhpTestRepos.git (uses SSH authentication)• git clone /url/to/local/repository (local repository)
    23. 23. Basic Commandsgit init Initializes a Git repository for a new projectgit add <filename> Add a file to the staging areagit add . Add all (changed) files to the staging areagit commit -m Add all staged files to the project repository ‘commit message’git clone <url> Clone an existing git repositorygit clone <url> Clone an existing git repository into the specified <directory> directorygit status Checks the state of your filesgit diff Shows files that have been changed but not staged
    24. 24. Basic Commandsgit rm <filename> Remove a file from the project (must be committed)git rm - -cached Remove a file from tracking, but keep it in the<filename> working directorygit move <old-filename> <new- Rename a file, or relocate a file to a new directoryfilename> Lists the commits made to a repository in reversegit log chronological ordergit log -p Shows the diff for each commitgit log -<number> Limits log output to the last <number> entries
    25. 25. Basic Commands Lists commit entries, along with a list of modified files,git log - - stat number of files changed, and lines added/removed in those filesgit log Lists commit entries in a pre-designated format (next - - pretty=<option> page) Lists the commits made to a repository in reversegit log chronological ordergit log -p Shows the diff for each commitgit log -<number> Limits log output to the last <number> entriesgit log - - pretty= Shows less or more detail in the log output <short, full, fuller>git log - - pretty=onelineOutputs a condensed listing, one line per commit
    26. 26. git log -- pretty=format:<options>%H, %h Commit hash, abbreviated commit hash%T, %t T hash, abbreviated tree hash ree%P %p , Parent hashes, abbreviated parent hashes%an Author name%ae Author e-mail%ad Author date%ar Author date, relative%cn Committer name%ce Committer e-mail%cd Committer date%cr Committer date, relative%s Subject
    27. 27. Branching and MergingBranching is where Git shinesCreating a branch is incredibly quickSwitching back and forth between branches is quickMerging branches is a snap
    28. 28. Why?In many VCS tools, branching is expensive, o*enrequiring the creation of a new copy of your source codeproject – a lengthy process for large projectsGit branching is very lightweight due to the way Gitstores data – creating a branch ultimately creates a newset of pointers instead of duplicating a file set
    29. 29. Git’s Snapshot ProcessAssume you have three files in the root directory that are part of anew project; You stage and commit themStaging creates a SHA-1 checksum for each file, stores that versionof the file in the Git repository as a blob, and adds the checksum tothe staging areaWhen you commit, Git checksums each subdirectory of the projectand stores those tree objects in the Git repository. Git then createsa commit object that contains the commit metadata and a pointerto the project tree so the snapshot can be recreated.
    30. 30. Git’s Snapshot ProcessYour repository now contains five objects:• Three blobs, one for each file• One tree object containing the contents of the root directory and a listing of the file “blobs”• One commit object with a pointer to the root tree object and a" the commit metadata• A master pointer identifying the “master” branch• A special “HEAD” pointer which references the current working branch (in this case there is only one)
    31. 31. Visual of Repository A*er a single commit HEAD Master Commit I Snapshot blob: READMECommit 1 (hash)tree: tree1 (hash) Tree1 (hash)author: Lisa blob: README blob: LICENSEcommitter: Lisa blob: LICENSE blob: index.phpInitial Commit blob: index.php
    32. 32. Changing the ProjectAdding a file, changing one, and committing again creates:• A blob for the new file• A blob for the changed file• A new tree object with a new file “blob” listing• A pointer to the previous commit object (the parent commit)The Master and HEAD pointers move to the current commit
    33. 33. Visual of Repository A*er the second and third commits HEAD Master Commit 1 (hash) Commit 2 (hash) Commit 3 (hash) tree: tree1 (hash) tree: tree2 (hash) tree: tree3 (hash) author: Lisa parent: commit1 parent: commit1 committer: Lisa author: Lisa author: Lisa committer: Lisa committer: Lisa Initial CommitCommit 1 Snapshot Commit 2 Snapshot Commit 3 Snapshot
    34. 34. Creating a BranchA branch simply creates a moveable pointer to one of thecommit objects stored in the repositoryThe branch you’re currently working on is stored in aspecial pointer ca"ed the HEADSwitching branches simply changes the HEAD pointer
    35. 35. Creating a New Branch Commit 1 Snapshot Commit 2 Snapshot HEAD Branch1 Commit 3 Snapshot Master git checkout -b branch1 Shortcut for: git branch branch1 git checkout branch1
    36. 36. Status of Your Project EnvironmentYour working directory contains the same files that itcontained when you were in the “master” branchYour “HEAD” pointer is now pointing to the “Branch1”pointerBoth “Branch1” and “Master” point to the “Commit3” snapshotSwitching between these two branches makes no obviouschange to your working directory
    37. 37. Commit – Branch1 Commit 1 Snapshot Commit 2 Snapshot Commit 3 Snapshot MasterHEADBranch1 Commit 4 Snapshot git commit -a -m “change to branch1”
    38. 38. Status of Your Project EnvironmentYour working directory contains the files that have beenplaced in the “Commit 4 Snapshot”Your pointer for “Branch1” is now pointing to the“Commit 4 Snapshot”Your pointer for “Master” is sti" pointing at the “Commit3 Snapshot”
    39. 39. Switch back to Master Commit 1 Snapshot Commit 2 Snapshot HEAD Commit 3 Snapshot Master Branch1 Commit 4 Snapshot git checkout master
    40. 40. Status of Your Project EnvironmentYour “HEAD” pointer is now pointing to the “Master”pointerYour working directory now contains the files previouslylisted in “Commit 3 Snapshot”Your “Branch1” pointer is pointing to the “Commit 4Snapshot”
    41. 41. Create another Branch Commit 1 Snapshot Commit 2 Snapshot HEAD Master Commit 3 Snapshot Hotfix1 Branch1 Commit 4 Snapshot git checkout -b hotfix1
    42. 42. Status of Your Project EnvironmentYour working directory files have not changedYou now have a new pointer, ca"ed “Hotfix1”, that points to the”Commit 3Snapshot”Your “Master” pointer also points to the “Commit 3 Shapshot”Your “Branch1” pointer points to the “Commit 4 Snapshot”Your “HEAD” pointer points to the “Hotfix1” pointerSwitching om “Master1” to “Hotfix1” has no apparent effect on the workingdirectory; however, switching to “Branch1” results in a change in the workingdirectory files
    43. 43. Commit – Hotfix1 Commit 1 Snapshot HEAD Commit 2 Snapshot Hotfix1Master Commit 3 Snapshot Commit 5 SnapshotBranch1 Commit 4 Snapshot git commit -a -m “changes for hotfix1”
    44. 44. Status of Your Project EnvironmentYou have a new snapshot, “Commit 5 Snapshot”, which has the“Hotfix1” pointer pointing to it, and the “HEAD” pointer pointingto “Hotfix1”Switching between the three branches results in changes to theworking directory because each pointer points to a differentsnapshotNote: if you change files in your working directory, you cannotswitch branches until you commit your changes to the currentbranch (There are ways around this)
    45. 45. Merge Hotfix1 into Master Commit 1 Snapshot Commit 2 Snapshot Hotfix1 Commit 3 Snapshot Commit 5 Snapshot Branch1 Commit 4 Snapshot Master git checkout master HEAD git merge hotfix1
    46. 46. What happened?When you issue the “git merge” command, you see a message –“fast forward” – in this merge, since the hotfix1 branch descendeddirectly om the snapshot that the master branch referenced, Gitsimply moves the “master” pointer forwardSince there is no divergent work to merge together, Git ca"s this a“fast forward”You could at this point delete the “hotfix1” branchNote: the work in hotfix1 is not contained in the files for branch1.
    47. 47. Deleting Hotfix1 Commit 1 Snapshot Commit 2 Snapshot Commit 3 Snapshot Commit 5 SnapshotBranch1 Commit 4 Snapshot Master HEADgit branch -d hotfix1
    48. 48. Merging Branches with Diverging HistoryAt this point, “Branch1” and “Master” have divergedThe commands to merge these branches together is thesame as the previous commandWhat happens behind the scenes is very different
    49. 49. Merging Branch1 Common Commit 1 Snapshot Ancestor Snapshot to Merge into Commit 2 SnapshotSnapshot to Merge Commit 3 Snapshot Commit 5 Snapshot Branch1 Commit 4 Snapshot Master git checkout master HEAD git merge branch1
    50. 50. What happened?Git does a three-way merge, creating a new commit snapshotand a new commit that points to it (Commit 6 Snapshot)This is ca"ed a “merge commit” and is different om theprevious commits because it has more than one parentGit automatica"y determines the best common ancestor touse for the merge base – this varies om SVN or CVSwhere the committer is responsible for making thisdetermination
    51. 51. Status after Merger Commit 1 Snapshot Commit 2 Snapshot Branch1 Commit 3 SnapshotCommit 4 Snapshot Commit 5 Snapshot Commit 6 Snapshot Master HEAD
    52. 52. Merge Conflicts If you change the same part of the same file differently in two branches you are merging together (or if you are merging into a remote master that has been changed since you checked out), Git notifies you of a“conflict”The new merge commit is not created; Git pauses the process until theconflict is resolvedIf you run “git status” you wi" see any file that has merge conflictslisted as “unmerged”Git adds standard conflict-resolution markers to files with conflicts
    53. 53. Resolving ConflictsA*er editing the files with conflicts to resolve the conflict,you run “git add” on each file to mark it as resolved, andcommit again.You can also run a graphical tool to resolve conflicts withthe command “git mergetool” – git wi" launch yoursystem’s default merge tool (opendiff on Mac OS X), or acustom tool you have specified in your configuration file
    54. 54. Stashing Your WorkIf you need to switch om your current working state toanother branch, but you’re not yet ready to commit yourwork, you can “stash” your working directory andrestore it later by running “git stash”.Stashing takes the “dirty” state of your working directoryand saves it on a stack of unfinished changes, so you canrestore your working directory to its “dirty” state at anytime
    55. 55. Restoring from the Stash To restore a working directory om the stash, run “git stash apply”. Restoring your working directory om a stash on the stack, by default, does not restore any files that had been staged to their staged state. You can specify that files that were staged but not committed be restaged when you restore om your stash
    56. 56. Git Stashgit stash Stashes the current working directory on the stackgit stash list Lists the “stashes” stored on the stackgit stash apply Restores the most recent “stash” to your working directorygit stash apply <stashid> Restores the specified stash to your working directory Restores the most recent stash and restages previouslygit stash apply - -index staged filesgit stash drop Removes a stash from the stack Removes a stash from the stack and use it to restore thegit stash pop working directorygit stash branch Create a branch from a stash <newbranchname>
    57. 57. Git on the ServerInsta"ing Git on a server is the same process as insta"ing Giton your local machineGit supports the fo"owing protocols:• Local Network• HTTP/S (does not require Git on the server)• Git• Secure She" (SSH)
    58. 58. Local NetworkGit commands use either the network file path, or file:// for theURLUsing the network file path is slightly fasterEasy to set up if you have existing network fileserver securityin place – simply set up a bare repository in a location whereeveryone has shared access and set read/write permissions as youwould for any other shared directoryCan be difficult to set up and slow for remote locations
    59. 59. HTTP/SEasy to set up on a web server – place a bare repositoryunder the document root, and set up a specific post-receive hook.Fetching or cloning repositories om a web server takesmuch longer than with other methodsIf you desire to “push”updates using Git to your webserver, you have to additiona"y set up WebDAV
    60. 60. Git ProtocolGit comes packaged with a special daemon that supports the git://protocolThe Git daemon by default listens on port 9418Fastest transfer protocol availableNo authentication is built-in – everyone with access to the web servercan pu" om the repository• Works fine for read-only public repositoriesMost difficult protocol to set up
    61. 61. Secure Shell (SSH)Most commonly used transport protocol for GitOnly network based protocol that supports reading andwritingOnly protocol with authenticationAnonymous access is not available – if you want toprovide anonymous access you’" have to set up one of theother protocols in addition to SSH
    62. 62. One Caution….If you’re running a git server, you want to keep your git client versionsand your server version as close as possible.I’ve persona"y run into issues committing to a remote repositorywhen the versions got even two minor versions apart (1.7.0.6 on theserver vs. 1.7.2 on the client)The only resolution was to back down the client version, or updatethe server versionThis same issue is applicable to GitHub or other Git hosted services aswe"
    63. 63. Slides Available!This presentation is available on SlideShare, at:http://www.slideshare.net/lhridley/fundamentals-of-git

    ×