diff --git a/LibGit2Sharp/Core/GitPushOptionsWrapper.cs b/LibGit2Sharp/Core/GitPushOptionsWrapper.cs
index 3ccffcf06..b8d79a59c 100644
--- a/LibGit2Sharp/Core/GitPushOptionsWrapper.cs
+++ b/LibGit2Sharp/Core/GitPushOptionsWrapper.cs
@@ -24,6 +24,7 @@ protected virtual void Dispose(bool disposing)
                 return;
 
             this.Options.CustomHeaders.Dispose();
+            this.Options.remote_push_options.Dispose();
             EncodingMarshaler.Cleanup(Options.ProxyOptions.Url);
             disposedValue = true;
         }
diff --git a/LibGit2Sharp/Network.cs b/LibGit2Sharp/Network.cs
index ba0a33144..f098a96c4 100644
--- a/LibGit2Sharp/Network.cs
+++ b/LibGit2Sharp/Network.cs
@@ -466,6 +466,12 @@ public virtual void Push(Remote remote, IEnumerable<string> pushRefSpecs, PushOp
                     gitPushOptions.CustomHeaders = GitStrArrayManaged.BuildFrom(pushOptions.CustomHeaders);
                 }
 
+                // If there are remot-push-options, create a managed string array.
+                if (pushOptions.RemotePushOptions != null && pushOptions.RemotePushOptions.Length > 0)
+                {
+                    gitPushOptions.remote_push_options = GitStrArrayManaged.BuildFrom(pushOptions.RemotePushOptions);
+                }
+
                 Proxy.git_remote_push(remoteHandle,
                                       pushRefSpecs,
                                       gitPushOptions);
diff --git a/LibGit2Sharp/PushOptions.cs b/LibGit2Sharp/PushOptions.cs
index 829eb0d60..bf76d8506 100644
--- a/LibGit2Sharp/PushOptions.cs
+++ b/LibGit2Sharp/PushOptions.cs
@@ -76,5 +76,11 @@ public sealed class PushOptions
         /// Options for connecting through a proxy.
         /// </summary>
         public ProxyOptions ProxyOptions { get; set; } = new();
+
+        /// <summary>
+        /// This string is sent to the server.
+        /// This parameter is equivalent to the value set in the git command line "--push-options".
+        /// </summary>
+        public string[] RemotePushOptions { get; set; }
     }
 }