Repository: jesseduffield/lazygit (language: go)

Issue:
Fail to push a tag that has the same name as the branch
**Describe the bug**
When trying to push a tag to remote that has the same branch name, it will fail with:
```
error: src refspec <tag name> matches more than one
error: failed to push some refs to <Remote git url>
```
Because it is using the command `git push <remote> <tag name>`, which doesn't specify it is pushing a tag.

**To Reproduce**
Steps to reproduce the behavior:

1. Create a branch with an arbitrary name and push to remote
2. Go to tag tab and create a tag with the same name as you created the branch
3. Push the tag
4. See error

**Expected behavior**
Tag should be pushed

**Screenshots**
None for now, can provide one if failed to reproduce.

**Version info:**
_Run `lazygit --version` and paste the result here_
```
commit=v0.36.0, build date=2022-11-15T07:26:07Z, build source=binaryRelease, version=0.36.0, os=linux, arch=amd64, git version=2.38.1
```
_Run `git --version` and paste the result here_
`git version 2.38.1`

**Additional context**
None for now.

**Note:** please try updating to the latest version or [manually building](https://github.com/jesseduffield/lazygit/#manual) the latest `master` to see if the issue still occurs.

Check code below, don't think it matters but can do so later if needed.

<!--
If you want to try and debug this issue yourself, you can run `lazygit --debug` in one terminal panel and `lazygit --logs` in another to view the logs.
-->

https://github.com/jesseduffield/lazygit/blob/82c54ed3d2339d2653dd8d06a39bcfb0d5e6cbe0/pkg/commands/git_commands/tag.go

```diff
func (self *TagCommands) Push(remoteName string, tagName string) error {
- return self.cmd.New(fmt.Sprintf("git push %s %s", self.cmd.Quote(remoteName), self.cmd.Quote(tagName))).PromptOnCredentialRequest().WithMutex(self.syncMutex).Run()
+ return self.cmd.New(fmt.Sprintf("git push %s tag %s", self.cmd.Quote(remoteName), self.cmd.Quote(tagName))).PromptOnCredentialRequest().WithMutex(self.syncMutex).Run()
}
```

See https://stackoverflow.com/a/52063091


Discussion / hints:
That proposed solution works for me. I've chucked a 'good first issue' label on this PR.
Hi @Neko-Box-Coder I would like to contribute on this. Let me know if I can work on this.

Fix patch:
diff --git a/pkg/commands/git_commands/tag.go b/pkg/commands/git_commands/tag.go
index 8b5a6996725..b4c04c4382e 100644
--- a/pkg/commands/git_commands/tag.go
+++ b/pkg/commands/git_commands/tag.go
@@ -35,5 +35,5 @@ func (self *TagCommands) Delete(tagName string) error {
 }
 
 func (self *TagCommands) Push(remoteName string, tagName string) error {
-	return self.cmd.New(fmt.Sprintf("git push %s %s", self.cmd.Quote(remoteName), self.cmd.Quote(tagName))).PromptOnCredentialRequest().WithMutex(self.syncMutex).Run()
+	return self.cmd.New(fmt.Sprintf("git push %s tag %s", self.cmd.Quote(remoteName), self.cmd.Quote(tagName))).PromptOnCredentialRequest().WithMutex(self.syncMutex).Run()
 }


Test patch: