Fixed internal push state not being cleared on download git_remote_download() must also clear the internal push state resulting from a possible earlier push operation. Otherwise calling git_remote_update_tips() will execute the push version instead of the fetch version and among other things, tags won't be updated.
diff --git a/src/remote.c b/src/remote.c
index 03b6f2b..bc6f10b 100644
--- a/src/remote.c
+++ b/src/remote.c
@@ -885,6 +885,11 @@ int git_remote_download(git_remote *remote, const git_strarray *refspecs)
if (error < 0)
return error;
+ if (remote->push) {
+ git_push_free(remote->push);
+ remote->push = NULL;
+ }
+
if ((error = git_fetch_negotiate(remote)) < 0)
return error;