I'd expect the parser to produce a different tree structure here. Something more like this (I've abbreviated the commands for readability):

```ruby
multi: {
  left: {
    and: {
      left: 'add -p',
      right: 'commit -v'
    }
  },
  right: {
    or: {
      left: 'push origin',
      right: 'reset --soft HEAD'
    }
  }
}
```

This would more closely match the semantics of bourne shell (which gitsh borrows heavily from in other places), Ruby, and a whole host of other languages.

If we want to support other more complex structures, we should add support for parentheses (although that's probably out of scope for this original PR).