1. Learn Git
    1. Learn Git with Bitbucket Cloud
      1. Create a Git repository
      2. Copy your Git repository and add files
      3. Pull changes from your Git repository on Bitbucket Cloud
      4. Use a Git branch to merge a file
    2. Learn about code review in Bitbucket Cloud
      1. Fork a teammate's repository
      2. Copy your fork and make a change to the repository
      3. Create a pull request
  2. Getting Started
    1. What is version control
      1. Benefits of version control
    2. What is Git
      1. Performance
      2. Security
      3. Flexibility
      4. Version control with Git
    3. Why Git for your organization
      1. Git for developers
      2. Git for marketing
      3. Git for product management
      4. Git for designers
      5. Git for customer support
      6. Git for human resources
      7. Git for anyone managing a budget
    4. Install Git
      1. Install Git on Mac OS X
      2. Install Git on Windows
      3. Install Git on Linux
    5. Setting up a repository
      1. git init
      2. git clone
      3. git config
    6. Saving changes
      1. git add
      2. git commit
    7. Git Stash
      1. .gitignore
        1. Inspecting a repository
          1. git status
          2. git log
        2. Viewing old commits
          1. Undoing Changes
            1. git checkout
            2. git revert
            3. git reset
            4. git clean
          2. Rewriting history
            1. git commit --amend
            2. git rebase
            3. git rebase -i
            4. git reflog
        3. Collaborating
          1. Syncing
            1. git remote
            2. git fetch
            3. git pull
            4. git push
          2. Making a Pull Request
            1. How it works
            2. Example
            3. Where to go from here
          3. Using Branches
            1. git branch
            2. git checkout
            3. git merge
          4. Comparing Workflows
            1. Centralized Workflow
            2. Feature Branch Workflow
            3. Gitflow Workflow
            4. Forking Workflow
        4. Migrating to Git
          1. SVN to Git - prepping for the migration
            1. For administrators
            2. Basic Git commands
            3. Git Migration Tools
            4. For developers
          2. Migrate to Git from SVN
            1. Prepare
              1. Convert
                1. Synchronize
                  1. Share
                    1. Migrate
                      1. Perforce to Git - why to make the move
                        1. Migrating from Perforce to Git
                        2. Advanced Tips
                          1. Advanced Git Tutorials
                            1. Merging vs. Rebasing
                              1. Conceptual Overview
                              2. The Golden Rule of Rebasing
                              3. Workflow Walkthrough
                              4. Summary
                            2. Reset, Checkout, and Revert
                              1. Commit-level Operation
                              2. File-level Operations
                              3. Summary
                            3. Advanced Git log
                              1. Formatting Log Output
                              2. Filtering the Commit History
                              3. Summary
                            4. Git Hooks
                              1. Conceptual Overview
                              2. Local Hooks
                              3. Server-side Hooks
                              4. Summary
                            5. Refs and the Reflog
                              1. Hashes
                              2. Refs
                              3. Packed Refs
                              4. Special Refs
                              5. Refspecs
                              6. Relative Refs
                              7. The Reflog
                              8. Summary
                            6. Git LFS

                            What You Need To Know About The New Git 1.8.3

                            Nicola PaolucciNicola Paolucci
                            Back to list

                            Whether you use git on the command line or via a tool of choice like SourceTree; whether you host your code on Bitbucket Cloud or on Stash (now called Bitbucket Server) behind your company firewall, if you're like me - wink - when a new git release comes out it's always a party.

                            Smooth Upgrade Path For Gitters

                            The new git 1.8.3 release is out. Of course this means upgrading to the latest version. It should be relatively pain free:

                            • Just type brew update && brew upgrade git if you use homebrew on OSX (due to a last minute bug discovered in parsing .gitignore on OSX, homebrew hasn't distributed the upgrade yet).
                            • Use a magic apt trick if on Ubuntu based distributions (I leave other distributions as an exercise for the reader).
                            • Simply run the new installer if on Windows (the Windows port sometimes lags a bit behind so please be patient if you can't find it right away).

                            For previous notes on git 1.8.2 see here.

                            So what's new in this release?

                            As usual lots has been fixed, it seems to me that this drop packs a lot more than the previous cycle. Without further ado, let me then show you a few things that caught my interest.

                            Colors, Colors And More Polish Everyone

                            Refinement of the command line UI continues with a few neat updates:

                            • During a git rebase session the prompt string generator (in contrib/completion/) will show how many changes there are in total and how many have been replayed.

                            • git branch -v -v can now paint the name of the branch it integrates with in a different color (color.branch.upstream, defaulting to blue):

                            npaolucci:~/dev/projects/stash] master ± git branch -v -v
                              1.3           3a7ec9d [origin/1.3] Merge pull request #765 from STASH-2808-...
                              gmail-renders 128fe79 [origin/gmail-renders] made pattern DOT_IN_WORD...
                            * master        66865b0 [origin/master] Automatic merge from 2.4 -> master
                            • git log --format now sports a %C(auto) token that tells Git to use color when resolving %d (decoration), %h (short commit object name), etc. for terminal output.

                            • git count-objects gained a --human-readable and -H option to show various large numbers in Ki/Mi/GiB scaled as necessary:

                            [npaolucci:~/dev/projects/stash] master ± git count-objects -H
                            169 objects, 680.00 KiB

                            Help Shows List Of Guides

                            git help -g is a new flag that will list the guides available, just like list of commands are given with -a:

                            [npaolucci:~/dev/projects/stash] master ± git help -g
                            The common Git guides are:
                              attributes   Defining attributes per path
                              glossary     A Git glossary
                              ignore       Specifies intentionally untracked files to ignore
                              modules      Defining submodule properties
                              revisions    Specifying revisions and ranges for Git
                              tutorial     A tutorial introduction to Git (for version 1.5.1 or newer)
                              workflows    An overview of recommended workflows with Git
                            'git help -a' and 'git help -g' lists available subcommands and some
                            concept guides. See 'git help <command>' or 'git help <concept>'
                            to read about a specific subcommand or concept.

                            Better "Triangular" Work Flow Support

                            git now supports a "triangular" work flow for situations where your default process is to always pull from one place and always push to a different one. To accomplish it you can now override configuration variable origin with a new remote.pushdefault and override branch.❊.remote with branch.❊.pushremote.

                            Improved Status For Reverts, Rebases and Bisects

                            git status has been improved to report when you are in the middle of a revert session, a cherry-pick or a bisect session.

                            Un-tracking Submodules! Finally.

                            If you've read my earlier article on git submodule you have seen that relatively simple operations were not supported too well by the submodule command line interface. Well there is good news!

                            Now you can say "I no longer am interested in this submodule" with git submodule deinit.

                            Other Nice Things Worth Mentioning

                            • The new --follow-tags option tells git push to push relevant annotated tags when pushing branches out.

                            • There was no good way to ask "I have a random string that came from outside world. I want to turn it into a 40-hex object name while making sure such an object exists". A new peeling suffix ^{object} can be used for that purpose, together with rev-parse --verify.


                            That's it for now, enjoy the goodies and let me know if there are worthy items I missed in the long list of updates.

                            As usual follow me @durdn and the awesome @AtlDevtools team for more DVCS rocking.