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

Git with Bitbucket

Git with Bitbucket

0aa5743bd364213c11abd871b2325f65?s=128

Sumin Byeon

June 01, 2012
Tweet

Transcript

  1. Git with Bitbucket Sumin Byeon SmarTrek Wednesday, April 25, 12

  2. Bitbucket • Hosting site for Git and Mercurial repositories •

    Not to be confused with a version control system • Not a necessity, but good to have for more effective collaboration Wednesday, April 25, 12
  3. Centralized Version Control Wednesday, April 25, 12

  4. Centralized Version Control • Subversion, CVS, etc. • Everything goes

    to the server; users commit changes to the sever, checkout the latest revision from the server. • No direct exchange between developers Wednesday, April 25, 12
  5. Distributed Version Control Wednesday, April 25, 12

  6. Distributed Version Control • Git, Mercurial, Bazaar, etc. • Each

    copy of repository is identical and self-sufficient • No need for a central server, but one may choose to have one • Developers may directly exchange changesets over Wi-Fi at a local coffee shop Wednesday, April 25, 12
  7. Git • Distributed version control system • Super fast •

    Space efficient • Independent of network access or a central server • Superior branching and merging mechanism • Various protection devices against corruption Wednesday, April 25, 12
  8. Benefits • Bitbucket is completely free if you have a

    .edu email address • Since Git does not requires a central server, we can even work in an airplane • Slave-driver-type supervisors (e.g., Dr. Chiu) will love this • Given the nature of our development team, we can’t fully take advantage of all the benefits of Git, but we use it mainly for its speed and ease of branching and merging. Wednesday, April 25, 12
  9. Workflow • Git does not impose any particular workflow, but

    this is the usual workflow for our Android repository. • Pull • Branch and merge • Commit changes • Push Wednesday, April 25, 12
  10. What To Store • Source code • Binary resources (e.g.,

    images, sounds, etc.) • Build scripts • Documents (e.g., README, LICENSE) • Unit tests • Anything that constitutes a project Wednesday, April 25, 12
  11. What Not To Store • Anything that can be synthesized

    • Compiled binary, automatically generated code (e.g., R.java for Android) • Personal preference configuration files • .gitignore file contains a list of files that will be ignored by Git Wednesday, April 25, 12
  12. Branches And Tags • Branch is basically a reference to

    a particular commit • Automatically updated whenever a commit is made to that branch • Tag marks a particular commit • May be moved manually Wednesday, April 25, 12
  13. Merging • $ git branch * master experimental • $

    git merge experimental • Merge may fail due to conflicts Wednesday, April 25, 12
  14. Conflict Resolution • Must be resolved manually • Commit merged

    code when you are done <<<<<<< HEAD:file.txt Hello world ======= Goodbye >>>>>>> 77976da35a11db4580b80ae27e8d65caf5208086:file.txt Wednesday, April 25, 12
  15. Emergency Kits • Before you have committed • $ git

    reset HEAD ${filename} • $ git checkout -- ${filename} • After you have committed • $ git revert HEAD • $ git commit --amend Wednesday, April 25, 12
  16. Questions? Wednesday, April 25, 12