diff --git a/src/main.rs b/src/main.rs
index b5625b7ef0e3c772c0b2003a904a46df14b5527a..670c2aedfb69803f00448c4c2dac5413c65e89f1 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -7,6 +7,7 @@ use configt::PartialPrune;
 mod checkout;
 mod commit;
 mod compact;
+mod compress;
 mod config_structure;
 mod configt;
 mod create_hooks;
@@ -100,6 +101,9 @@ enum Commands {
     /// This command can be used to add a new remote for push and pull commands
     #[clap(subcommand)]
     Remote(Remote),
+    /// This command can be used to push a repository using a remote
+    /// #[clap(subcommand)]
+    Push(Push),
 }
 
 #[derive(Debug, Args)]
@@ -294,6 +298,12 @@ struct RemoteRm {
     global: bool,
 }
 
+#[derive(Debug, Args)]
+struct Push {
+    /// The name of the remote to use
+    key: String,
+}
+
 fn main() {
     let args = Cli::parse();
 
@@ -374,5 +384,8 @@ fn main() {
             }
             Remote::Rm(e) => remote::remove_config(&e.key, e.global),
         },
+        Commands::Push(p) => {
+            compress::push(&p.key);
+        }
     }
 }