functions/Git.psm1

Function Invoke-Git {
  [Alias('g')]
  Param(
    [Parameter(Mandatory = $true, Position = 0)]
    [String]
    $Cmd,

    [Parameter(Mandatory = $false, ValueFromRemainingArguments = $true)]
    [String[]]
    $Params
  )

  Switch ($Cmd) {
    # add
    'a' { git add $Params }
    # branch
    'b' { git branch $Params }
    # checkout
    'c' { git checkout $Params }
    # clone repo
    'cl' { git clone $Params }
    # commit
    'co' { git commit $Params }
    # fetch
    'f' { git fetch $Params }
    # init
    'i' { git init $Params }
    # log
    'l' { git log $Params }
    # pretty log
    'll' { git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit }
    # merge
    'm' { git merge $Params }
    # pull
    'pl' { git pull $Params }
    # push
    'ps' { git push $Params }
    # rebase
    'r' { git rebase $Params }
    # reset changes
    'rs' { git reset $Params }
    # status
    's' { git status $Params }
    # tag
    't' { git tag $Params }
    # catchall
    default { git $Cmd $Params }
  }
}