• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Git session Dropsolid.com
 

Git session Dropsolid.com

on

  • 253 views

Git session

Git session

Statistics

Views

Total Views
253
Views on SlideShare
253
Embed Views
0

Actions

Likes
1
Downloads
3
Comments
1

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

11 of 1 previous next

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Git session Dropsolid.com Git session Dropsolid.com Presentation Transcript

    • Git session Hannes Tack
    • Overview 1. What is git? 2. Basic git 3. Workflow 4. Tips and tricks
    • What is git?
    • What is git? Open source distributed version control system
    • Distributed • Everything is local – Fast – Every clone is a backup – Work offline
    • Basic git
    • Installing Git • Download from http://gitscm.com/downloads • Launch the installer • Or Xcode, homebrew, …
    • Configuring Git • $ git config --global user.name 'Hannes Tack‟ • $ git config –global user.email „hannes@dropsolid.com‟
    • Clone a repo
    • Clone a repo • Clone an existing repo or create a new one: – $ git clone user@host:repo
    • .gitignore
    • .gitignore • What? – Makes git ignore files / directories – Repo specific or global – Drupal example of a .gitignore file: http://drupalcode.org/project/drupal.git/blob/HEAD: /example.gitignore
    • .gitignore # Ignore configuration files that may contain sensitive information */sites/*/settings*.php # Ignore paths that contain user-generated content. */sites/*files */sites/*/private # Ignore editor specific files Drupal.sublime-projectcompletions *.sublime-project *.sublime-workspace # Ignore OS specific files .DS_Store
    • global .gitignore • Create any file: - $vi ~/.gitignore_global • Add paths to be ignored. - Example: https://gist.github.com/4321950 • Use as global gitignore file: Git config –global core.excludesfile ~/.gitignore_global
    • local .gitignore • Create a .gitignore file: - $vi ~/your_project/.gitignore • Place it anywhere in your repo • Add paths to be ignored, relative to the location of the file.
    • A Basic Workflow
    • A basic workflow • • • • • Write code Stage your changes Review your changes Commit your changes Push your changes
    • A basic workflow • • • • • Write code Stage your changes Review your changes Commit your changes Push your changes
    • A basic workflow
    • A basic workflow Git diff • Git diff shows what you‟ve changed • $ git diff <filename>
    • A basic workflow
    • A basic workflow • • • • • Write code Stage your changes Review your changes Commit your changes Push your changes
    • A basic workflow
    • A basic workflow
    • A basic workflow
    • A basic workflow
    • A basic workflow
    • Git add
    • A basic workflow
    • A basic workflow
    • A basic workflow
    • A basic workflow Staged files • git diff --staged shows the changes that are staged • git reset HEAD <filename> removes a file from “staging”
    • A basic workflow • • • • • Write code Stage your changes Review your changes Commit your changes Push your changes
    • Git commit
    • A basic workflow
    • A basic workflow
    • A basic workflow Git commit • Changes are committed to local repo • Others won‟t see these changes yet • Commit message is required • And should look like „Issue #123: describe what you changed.‟
    • A basic workflow • • • • • Write code Stage your changes Review your changes Commit your changes Push your changes
    • Git push
    • A basic workflow
    • A basic workflow
    • A basic workflow
    • Merging
    • A basic workflow • Remote branch contains commit(s) that are not present in your local branch. • Get those commits first by merging, then push your commits.
    • A basic workflow Git pull
    • A basic workflow Git push
    • A basic workflow Git pull
    • A basic workflow Git pull
    • A basic workflow Git pull
    • A basic workflow Git pull
    • A basic workflow Git pull
    • A basic workflow Git pull
    • A basic workflow Fix code manually
    • A basic workflow Fix conflict UI
    • A basic workflow Fix conflict UI
    • A basic workflow Push merged code
    • Git log
    • Git log - View the latest 10 log messages - $ git log -n 10
    • Git log - Show nicer log: - $ git log --oneline -n 20
    • Git log - Search log messages content: $ git log --grep=Breadcrumb
    • Git log - Search log messages content: $ git log --grep=Breadcrumb
    • Git log - Search commit content: $ git log -S "Implements hook_views_data" –oneline
    • Git log - Show commit content:
$ git show de25c94
    • Undoing things
    • Git checkout
    • Git checkout
    • Git checkout • Throw away changes:
$ git checkout index.html • Restores your working tree to the last version committed to git. • Use git checkout to throw away changes that have not been added and committed. • Use carefully.
    • Git checkout
    • Git reset
    • Git reset
    • Git reset • Keep your code changes, remove file from the index:
$ git reset HEAD index.html • Restores your index to the last version known to git.
    • Git reset
    • Git reset --hard
    • Git reset --hard • Resets working tree and index to a specific commit. • $ git reset --hard 5497461 • Reset a branch to the origin branch:
$ git reset --hard origin/master • Use carefully.
    • Git revert
    • Git revert • Undo a specific commit:
$ git revert 5497461 • Creates a new commit that removes the specified commit.
    • Git revert
    • Branching
    • Branching - List local branches: $ git branch
    • Branching - List all branches:
$ git branch -a
    • Branching - Create a new branch:
$ git branch issue-123 - Switch to that branch:
$ git checkout issue123 - Or create and switch to a branch:
$ git checkout -b issue-123 - Push branch to origin:
$ git push origin issue-123
    • Branching - Use a remote branch:
$ git checkout -t origin/issue-11699
    • Branching • Delete a local branch that is fully merged:
$ git branch -d branch_name • Force delete a local branch:
$ git branch -D branch_name • Delete a remote branch:
$ git push origin -delete :branch_name • Completely remove a branch:
$ git push origin --delete :branch_name
$ git branch -D branch_name
    • Tagging
    • Tagging • Create tag:
$ git tag sporting-beta-1 -a -m 'Sporting beta 1 release.' • Push tag:
$ git push --tags • List tags:
$ git tag
    • Tagging • Move a tag:
$ git tag -f sporting-beta-1 • Delete a tag:
$ git tag -d sporting-beta-1
$ git push origin :sporting-beta-1
    • Patching
    • Patching • $ git diff > [project_name][short_description]-[issue-number][comment-number].patch • Add the patch file to the root of the module you patched.
    • Tips & tricks
    • Git stash
    • Git stash • Store code changes without committing them. • Handy when you urgently need to switch branches. • Stash your code changes:
$ git stash • List all available stashes:
$ git stash list • Most recent stash is shown on top
    • Git stash • Apply a stash:
$ git stash apply stash@{0}
    • Git stash
    • Git aliases
    • Git bisect • Shortcuts • Define aliases in .gitconfig file. • Ex: ~/.gitconfig
    • Git aliases
    • Git aliases
    • Git bisect
    • Git bisect • Find out in when something broke • First, find a commit when everything was working • Find a commit where things are not working. • Go to the root of the repository • $ git bisect start
$ git bisect good fd0a623
$ git bisect bad 256d85
    • Git bisect • Refresh the page and see if the bug is there • $ git bisect good/git bisect bad • Repeat until git tells you the commit that broke it
    • Resources
    • Resources • Pro git book: http://git-scm.com/book • Git bisect tutorial: http://webchick.net/node/99
    • Questions?