Mac specific optimizations in ~/.gitconfig

I read that discussion about the content of “~/.gitconfig” on Linux: https://stackoverflow.com/questions/267761/what-does-your-gitconfig-contain

I know some Mac specific optimizations, such as using “mate” as default editor:

  • Git ERROR: Permission to user1/repoA.git denied to user2
  • Django settings.py: Separate local and global configuration
  • What is $(prefix) on $(prefix)/etc/gitconfig?
  • BitNami GitLab Stack 5.1.0-2 with LDAP
  • Git 2.4.8 built from kernel.org sources and missing HTTP/HTTPS helpers
  • How to export/import the Jenkins configuration?
  • [core]
        editor = mate -w
    

    or using opendiff as diff editor:

    [diff]
        external = opendiff
    

    Do you know other Mac specific optimizations (and/or tools) that I could install/configure in “~/.gitconfig” file in order to get a very user-friendly git?

  • ExecJS::ProgramError: Unexpected token punc «(», expected punc «:» when running rake assets:precompile on production
  • git - diff of current changes before committing
  • .gitignore not ignoring web.config
  • Git - Include files from other repositories
  • Committing Machine Specific Configuration Files
  • Pulling just one directory out of a git repo
  • 3 Solutions collect form web for “Mac specific optimizations in ~/.gitconfig”

    I prefer to keep the default diff command internal, for quick summaries at the terminal, and access the more advanced diff programs (I use MacVim) using the difftool commmand. I describe the set up procedure here. The Mac-specific part is in my wrapper script, where I facultatively launch MacVim if it is available, then default to regular Vim. You can adapt to use TextMate, of course, if that is your preference.

    I use opendiff and textmate as external tools for git. You can configure them by running the following commands in bash:

    #TextMate as the default editor
    git config --global core.editor "mate -w"
    
    #Opendiff (FileMerge) to resolve merge conflicts:
    git config --global merge.tool opendiff
    
    #Opendiff (FileMerge) as diff tool
    git config --global diff.tool opendiff
    

    Alternatively you can configure the gitconfig file by adding the following:

    [diff]
        tool = opendiff
    
    [merge]
        tool = opendiff
    
    [core]
        editor = mate -w
    

    The difftool and mergetool is only available after version 1.6.3

    Since git reuses the same temporary file for commit messages, I recommend using

    [core]
        editor = mate -wl1
    

    so TextMate puts the cursor onto the first line every time instead of remembering the cursor position from last time.

    And if you create the following shell script…

    #!/bin/sh
    #
    # ~/bin/git-opendiff.sh
    #
    /usr/bin/opendiff "$2" "$5" -merge "$1"
    

    …and configure git to use it as external diff tool…

    $ git config --global diff.external ~/bin/git-opendiff.sh
    

    …you can use opendiff for diffs and merges.

    Git Baby is a git and github fan, let's start git clone.