<!--- Verify first that your issue is not already reported on GitHub -->
<!--- Also test if the latest release and devel branch are affected too -->
<!--- Complete *all* sections as described, this form is processed automatically -->

##### SUMMARY
<!--- Explain the problem briefly below -->
The invocation to git module executes the command `git fetch --tags` which can fail under certain circumstances (some tag remotely overridden).
Even by adding the option `force: "yes"` the command it is executed without the **-f** option.
To workaround it, it is necessary to execute the command `git fetch --tags -f` previous to the git module execution.

##### ISSUE TYPE
- Bug Report

##### COMPONENT NAME
<!--- Write the short name of the module, plugin, task or feature below, use your best guess if unsure -->
Git Module

##### ANSIBLE VERSION
<!--- Paste verbatim output from "ansible --version" between quotes -->
```paste below
ansible 2.9.4
```

##### CONFIGURATION
<!--- Paste verbatim output from "ansible-config dump --only-changed" between quotes -->
```paste below

```

##### OS / ENVIRONMENT
<!--- Provide all relevant information below, e.g. target OS versions, network device firmware, etc. -->

##### STEPS TO REPRODUCE
<!--- Describe exactly how to reproduce the problem, using a minimal test-case -->
Generate a git tag:
```
git checkout bla
git tag -f DEV
git push origin DEV --force
```

And remotely, override it:

```
git checkout foo
git tag -f DEV
git push origin DEV --force
```

Then in the first local environment, execute the ansible git task

<!--- Paste example playbooks or commands between quotes below -->
```yaml
- name: "Clone/refresh Staging Repo with SSH"
      when: use_ssh == "yes"
      git:
        dest: "{{ staging_repo }}"
        name: "some git repo"
        version: "master"
        force: "yes"
        key_file: '~/.ssh/id_rsa'
        ssh_opts: "-o StrictHostKeyChecking=no"
```

<!--- HINT: You can paste gist.github.com links for larger files -->

##### EXPECTED RESULTS
<!--- Describe what you expected to happen when running the steps above -->
If I set the option force to true, I would expect to get the git fetch command executed with the -f option.

##### ACTUAL RESULTS
<!--- Describe what actually happened. If possible run with extra verbosity (-vvvv) -->

<!--- Paste verbatim command output between quotes -->
```paste below
TASK [Clone/refresh Staging Repo with SSH] ************************************************************************************
4:37
fatal: [localhost]: FAILED! => {“changed”: false, “cmd”: [“/usr/local/bin/git”, “fetch”, “--tags”, “origin”], “msg”: “Failed to download remote objects and refs:  From XXXX   some commit..other commit  master               -> origin/master\n   
 ! [rejected]        DEV -> DEV (would clobber existing tag)}
```

umask:
        description:
            - The umask to set before doing any checkouts, or any other
              repository maintenance.
        version_added: "2.2"
    recursive:
        description:
            - if C(no), repository will be cloned without the --recursive
              option, skipping sub-modules.
        type: bool
        default: 'yes'
        version_added: "1.6"
    track_submodules:
        description:
            - if C(yes), submodules will track the latest commit on their
              master branch (or other branch specified in .gitmodules).  If
              C(no), submodules will be kept at the revision specified by the
              main project. This is equivalent to specifying the --remote flag
              to git submodule update.
        type: bool
        default: 'no'
        version_added: "1.8"
    verify_commit:
        description:
            - if C(yes), when cloning or checking out a C(version) verify the
              signature of a GPG signed commit. This requires C(git) version>=2.1.0
              to be installed. The commit MUST be signed and the public key MUST
              be present in the GPG keyring.
        type: bool
        default: 'no'