Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Version Control with Git

Version Control with Git

Rails Girls Frankfurt 2015 Talk by Claudius Coenen

Rails Girls Frankfurt

September 19, 2015
Tweet

More Decks by Rails Girls Frankfurt

Other Decks in Education

Transcript

  1. Version Control with Git
    Claudius Coenen License: CC-BY-4.0

    View Slide

  2. Why Version Control?
    welcome.html

    View Slide

  3. Why Version Control?
    welcome.html
    welcome_final.html
    welcome_final2.html
    welcome_final2-bernd.html
    welcome2.html
    welcome_2.html
    welcome_final2.html
    welcome_2.html
    welcome.html
    welcome_final.html
    welcome_final2-bernd.html
    welcome2.html

    So, what is the newest version of this file?

    Who changed the title?

    Yesterday, it was working just fine.

    Did you get my mail?

    Who's working on XYZ?

    Is this bugfix already included somewhere?

    Who is working on this project, anyway?

    View Slide

  4. Safe-Keeping of Versions

    When you check something into version control,
    it will remember this exact version for you

    You can return to a previous version

    You get a fancy timeline of your project
    Today
    Yesterday, 10:04
    10.10.2012
    14:12
    06.03.2012
    14:10

    View Slide

  5. Conflict Resolution

    Files edited by different people can usually be
    resolved automatically.
    welcome.html
    (Alice)
    welcome.html
    (Bob)
    welcome.html
    (Both changes)

    View Slide

  6. The „Commit“

    An item in the history

    Think of this as a snapshot of your project
    commit f303d887ebf263b466958ca7c83aebb9385936f0
    Author: Claudius Coenen
    Date: Sat Feb 15 02:08:44 2014 +0100
    Ticket #2342: fixing file upload to work with
    animated gif
    Commit-Hash
    Commit-Message

    View Slide

  7. Full Workflow

    DO STUFF
    change files the way you normally would

    PREPARE
    git add the changes, so git knows about
    them

    COMMIT
    git commit, preferably with a nice message
    think: committing to memory
    or: committment
    git pull
    git push

    View Slide

  8. Branching/Merging
    And The History

    View Slide

  9. Branching/Merging
    And The History
    #§%$!~??
    Appropriate use of
    Comic Sans!

    View Slide

  10. Branching/Merging
    And The History
    Merge
    Branch starts here
    Usually no problem

    View Slide

  11. Git Command Line Interface

    View Slide

  12. Github App

    View Slide

  13. Atlassian SourceTree

    View Slide

  14. References

    View Slide

  15. Command Cheat Sheet
    (Infrequent Commands)

    git config --global user.name “Jane Doe“

    git config --global user.email “[email protected]

    git config --global color.ui true

    git config --system core.editor

    git init (creates a new repository)

    git clone („clones“ existing)

    View Slide

  16. Command Cheat Sheet
    (Frequent Commands)

    git status

    git log

    git add

    git commit

    git checkout

    git reset
    These Commands
    are Local!
    (what's up on my drive)
    (what happened so far)
    (prepare these files for commit)
    (commit the added files)
    (return to a previous version)
    (reset the git index)

    View Slide

  17. Command Cheat Sheet
    (Used often)

    git fetch

    git pull

    git push
    (just download)
    (download AND merge)
    (send my changes out)
    These Commands
    go over the network*
    *) simplification

    View Slide

  18. Where to Start

    Baby steps in your browser
    – http://try.github.io

    Download git for your system
    – http://git-scm.com/downloads

    Maybe add a Git client that suits your taste
    – At least try the commandline. Git in its purest form.
    – gitk, GitHub-App, SourceTree, GitTower, TortoiseGit

    Integrate git into your IDE / Editor
    – Eclipse, Sublime, WebStorm, RubyMine, NetBeans

    View Slide

  19. Hand-Picked Resources

    Git has extensive documentation
    – http://git-scm.com/documentation

    There's a lot of Tutorials out there
    – http://marklodato.github.io/visual-git-guide/index-en.html
    – https://www.kernel.org/pub//software/scm/git/docs/everyday.html
    – http://www.teehanlax.com/blog/github-fundamentals/
    – http://mislav.uniqpath.com/2010/07/git-tips/
    – http://nvie.com/posts/a-successful-git-branching-model/

    In-Depth Info
    – http://git-scm.com/book

    Cannon fodder for lengthy debates with your fellow geek
    – http://thkoch2001.github.io/whygitisbetter/

    View Slide