{"id":75820,"date":"2026-06-04T12:21:50","date_gmt":"2026-06-04T09:21:50","guid":{"rendered":"https:\/\/vpesports.com\/minecraft\/mods\/gitpull\/"},"modified":"2026-06-04T12:21:50","modified_gmt":"2026-06-04T09:21:50","slug":"gitpull","status":"publish","type":"mod","link":"https:\/\/vpesports.com\/minecraft\/mods\/gitpull\/","title":{"rendered":"gitpull"},"content":{"rendered":"<p># GitPull<\/p>\n<p>A plugin for Spigot\/Paper servers, used to execute pull operations from Git repositories.<\/p>\n<p>Supported Features:<\/p>\n<p>&#8211; `\/pull`: Pulls all configured repositories.<br \/>\n&#8211; `\/pull <name>`: Pulls a specified repository.<br \/>\n&#8211; `\/pull reload`: Reloads the configuration file.<br \/>\n&#8211; Supports pulling multiple repositories into different directories respectively.<br \/>\n&#8211; Supports execution by OP (Server Operator) and the server console.<br \/>\n&#8211; Supports Tab completion for repository names and `reload`.<\/p>\n<p>## Installation<\/p>\n<p>1. Place the plugin jar file into the server&#8217;s `plugins` directory.<br \/>\n2. Start the server once to generate the default configuration file.<br \/>\n3. Edit `plugins\/gitpull\/config.yml`.<br \/>\n4. Execute `\/pull reload` to reload the configuration, or restart the server directly.<\/p>\n<p>## Commands<\/p>\n<p>### `\/pull`<\/p>\n<p>Pulls all repositories defined in the configuration file.<\/p>\n<p>### `\/pull <name>`<\/p>\n<p>Pulls the repository with the specified name.<\/p>\n<p>### `\/pull reload`<\/p>\n<p>Reloads the plugin configuration file.<\/p>\n<p>## Permissions<\/p>\n<p>&#8211; `gitpull.pull`: Allows the execution of `\/pull` and `\/pull <name>`.<br \/>\n&#8211; `gitpull.reload`: Allows the execution of `\/pull reload`.<\/p>\n<p>By default, both permissions are granted to `op`.<\/p>\n<p>## Configuration File<\/p>\n<p>Configuration file path:<\/p>\n<p>&#8220;`text<br \/>\nplugins\/gitpull\/config.yml<br \/>\n&#8220;`<\/p>\n<p>Example configuration:<\/p>\n<p>&#8220;`yml<br \/>\ngit-command: git<br \/>\nclone-if-missing: true<br \/>\ntimeout-seconds: 300<\/p>\n<p>repositories:<br \/>\n  autoop:<br \/>\n    repository: &#8220;https:\/\/github.com\/example\/repo.git&#8221;<br \/>\n    directory: &#8220;world\/datapacks\/repo&#8221;<br \/>\n    branch: &#8220;master&#8221;<\/p>\n<p>  devpack:<br \/>\n    repository: &#8220;https:\/\/github.com\/example\/repo.git&#8221;<br \/>\n    directory: &#8220;world\/datapacks\/dev&#8221;<br \/>\n    branch: &#8220;dev&#8221;<br \/>\n&#8220;`<\/p>\n<p>### Global Configuration Items<\/p>\n<p>#### `git-command`<\/p>\n<p>The Git command to be invoked. Default is:<\/p>\n<p>&#8220;`yml<br \/>\ngit-command: git<br \/>\n&#8220;`<\/p>\n<p>If the `git` executable cannot be found in the server&#8217;s environment variables, an absolute path can be provided, for example:<\/p>\n<p>&#8220;`yml<br \/>\ngit-command: &#8220;\/bin\/git&#8221;<br \/>\n&#8220;`<\/p>\n<p>#### `clone-if-missing`<\/p>\n<p>Whether to automatically execute `git clone` when the target directory is not a valid Git repository.<\/p>\n<p>&#8220;`yml<br \/>\nclone-if-missing: true<br \/>\n&#8220;`<\/p>\n<p>#### `timeout-seconds`<\/p>\n<p>The timeout duration for a single repository operation, in seconds.<\/p>\n<p>&#8220;`yml<br \/>\ntimeout-seconds: 300<br \/>\n&#8220;`<\/p>\n<p>### Repository Configuration Items<\/p>\n<p>Each repository is defined under `repositories` and is distinguished by a unique name.<\/p>\n<p>For example:<\/p>\n<p>&#8220;`yml<br \/>\nrepositories:<br \/>\n  example:<br \/>\n    repository: &#8220;https:\/\/github.com\/example\/repo.git&#8221;<br \/>\n    directory: &#8220;world\/datapacks\/repo&#8221;<br \/>\n    branch: &#8220;master&#8221;<br \/>\n&#8220;`<\/p>\n<p>#### `repository`<\/p>\n<p>The remote repository URL.<\/p>\n<p>HTTPS is supported:<\/p>\n<p>&#8220;`yml<br \/>\nrepository: &#8220;https:\/\/github.com\/username\/repo.git&#8221;<br \/>\n&#8220;`<\/p>\n<p>SSH is also supported:<\/p>\n<p>&#8220;`yml<br \/>\nrepository: &#8220;git@github.com:username\/repo.git&#8221;<br \/>\n&#8220;`<\/p>\n<p>#### `directory`<\/p>\n<p>The local target directory for pulling.<\/p>\n<p>&#8211; Absolute path: Uses the provided path directly.<br \/>\n&#8211; Relative path: Resolved relative to the server root directory.<\/p>\n<p>For example:<\/p>\n<p>&#8220;`yml<br \/>\ndirectory: &#8220;world\/datapacks\/AutoOP&#8221;<br \/>\n&#8220;`<\/p>\n<p>This will pull the data to `world\/datapacks\/AutoOP` under the server root directory.<\/p>\n<p>#### `branch`<\/p>\n<p>The branch to pull or clone. This field can be empty.<\/p>\n<p>&#8220;`yml<br \/>\nbranch: &#8220;master&#8221;<br \/>\n&#8220;`<\/p>\n<p>If left empty, the repository&#8217;s default branch will be used:<\/p>\n<p>&#8220;`yml<br \/>\nbranch: &#8220;&#8221;<br \/>\n&#8220;`<\/p>\n<p>## Usage Examples<\/p>\n<p>### Pull All Repositories<\/p>\n<p>&#8220;`text<br \/>\n\/pull<br \/>\n&#8220;`<\/p>\n<p>### Pull a Single Repository<\/p>\n<p>&#8220;`text<br \/>\n\/pull autoop<br \/>\n&#8220;`<\/p>\n<p>### Reload Configuration<\/p>\n<p>&#8220;`text<br \/>\n\/pull reload<br \/>\n&#8220;`<\/p>\n<p>## Private Repositories<\/p>\n<p>This plugin invokes the `git` executable on the server system, meaning private repository authentication relies strictly on the server machine&#8217;s local Git configuration.<\/p>\n<p>Recommended methods:<\/p>\n<p>### 1. SSH Key<\/p>\n<p>Format the repository URL as:<\/p>\n<p>&#8220;`yml<br \/>\nrepository: &#8220;git@github.com:username\/private-repo.git&#8221;<br \/>\n&#8220;`<\/p>\n<p>Then, configure an SSH key on the server machine and add the corresponding public key to your GitHub account or to the repository&#8217;s Deploy Keys.<\/p>\n<p>### 2. Git Credential Manager<\/p>\n<p>If using HTTPS, you can manually execute a Git login operation once on the server machine to let the system remember the credentials. The plugin will then reuse them.<\/p>\n<p>It is highly unrecommended to write the token directly in plain text within the configuration file:<\/p>\n<p>&#8220;`yml<br \/>\nrepository: &#8220;https:\/\/username:yourtoken@github.com\/username\/repo.git&#8221;<br \/>\n&#8220;`<\/p>\n<p>## Notes<\/p>\n<p>&#8211; Repository names cannot be named `reload`.<br \/>\n&#8211; When `\/pull` is executed for all repositories, they will be processed sequentially in the configured order.<br \/>\n&#8211; If a specific repository fails, it will not prevent subsequent repositories from executing.<br \/>\n&#8211; If a pull task is already running, any new `\/pull` requests will be rejected.<br \/>\n&#8211; If the target directory already exists, is not a Git repository, and is not empty, the plugin will not forcefully overwrite the directory.<\/p>\n<p>## Logging Information<\/p>\n<p>&#8211; Upon success, a success message will be displayed in the in-game chat or the server console.<br \/>\n&#8211; Detailed `git stdout` (Standard Output) and `git stderr` (Standard Error) will be output to the server logs.<br \/>\n&#8211; After a batch pull is completed, the total number of successes and failures will be displayed.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Pull the files from the git repository to the folder. \u4ecegit\u4ed3\u5e93\u62c9\u53d6\u6587\u4ef6\u5230\u6587\u4ef6\u5939\u3002<\/p>\n","protected":false},"featured_media":0,"template":"","meta":{"_minecraft_slug":"gitpull","_minecraft_project_id":"R3K4UT9Q","_minecraft_author":"MooreFoss","_minecraft_license":"Apache-2.0","_minecraft_downloads":6,"_minecraft_follows":0,"_minecraft_client_side":"unsupported","_minecraft_server_side":"required","_minecraft_storage_type":"zip","_minecraft_archive_name":"gitpull.zip","_minecraft_size_bytes":19214,"_minecraft_version_count":1,"_minecraft_updated_at":"2026-05-16T12:30:11.403478Z","_minecraft_date_created":"2026-03-29T06:14:08.382960Z","_minecraft_date_modified":"2026-03-20T14:45:46.037289Z","_minecraft_project_url":"https:\/\/modrinth.com\/mod\/gitpull","_minecraft_icon_attachment_id":0,"_minecraft_imported_at":"2026-06-04T09:21:51+00:00","_minecraft_import_hash":"f85e7802460f8242b1d41a17769d0374","_minecraft_versions":"","_minecraft_links":"","_minecraft_gallery":"","_minecraft_api_metadata":""},"mod_category":[126,129],"mod_loader":[134],"minecraft_version":[62,37,40,41,73,74,38,78,79,80,81,82],"class_list":["post-75820","mod","type-mod","status-publish","hentry","mod_category-management","mod_category-spigot","mod_loader-spigot","minecraft_version-1-21","minecraft_version-1-21-1","minecraft_version-1-21-10","minecraft_version-1-21-11","minecraft_version-1-21-2","minecraft_version-1-21-3","minecraft_version-1-21-4","minecraft_version-1-21-5","minecraft_version-1-21-6","minecraft_version-1-21-7","minecraft_version-1-21-8","minecraft_version-1-21-9"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>gitpull - Minecraft<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/vpesports.com\/minecraft\/mods\/gitpull\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"gitpull - Minecraft\" \/>\n<meta property=\"og:description\" content=\"Pull the files from the git repository to the folder. \u4ecegit\u4ed3\u5e93\u62c9\u53d6\u6587\u4ef6\u5230\u6587\u4ef6\u5939\u3002\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vpesports.com\/minecraft\/mods\/gitpull\/\" \/>\n<meta property=\"og:site_name\" content=\"Minecraft\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/gitpull\\\/\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/gitpull\\\/\",\"name\":\"gitpull - Minecraft\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/#website\"},\"datePublished\":\"2026-06-04T09:21:50+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/gitpull\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/gitpull\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/gitpull\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Mods\",\"item\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"gitpull\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/#website\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/\",\"name\":\"Minecraft\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"gitpull - Minecraft","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/vpesports.com\/minecraft\/mods\/gitpull\/","og_locale":"en_US","og_type":"article","og_title":"gitpull - Minecraft","og_description":"Pull the files from the git repository to the folder. \u4ecegit\u4ed3\u5e93\u62c9\u53d6\u6587\u4ef6\u5230\u6587\u4ef6\u5939\u3002","og_url":"https:\/\/vpesports.com\/minecraft\/mods\/gitpull\/","og_site_name":"Minecraft","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/vpesports.com\/minecraft\/mods\/gitpull\/","url":"https:\/\/vpesports.com\/minecraft\/mods\/gitpull\/","name":"gitpull - Minecraft","isPartOf":{"@id":"https:\/\/vpesports.com\/minecraft\/#website"},"datePublished":"2026-06-04T09:21:50+00:00","breadcrumb":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/gitpull\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vpesports.com\/minecraft\/mods\/gitpull\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/vpesports.com\/minecraft\/mods\/gitpull\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/vpesports.com\/minecraft\/"},{"@type":"ListItem","position":2,"name":"Mods","item":"https:\/\/vpesports.com\/minecraft\/mods\/"},{"@type":"ListItem","position":3,"name":"gitpull"}]},{"@type":"WebSite","@id":"https:\/\/vpesports.com\/minecraft\/#website","url":"https:\/\/vpesports.com\/minecraft\/","name":"Minecraft","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/vpesports.com\/minecraft\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod\/75820","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod"}],"about":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/types\/mod"}],"wp:attachment":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/media?parent=75820"}],"wp:term":[{"taxonomy":"mod_category","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod_category?post=75820"},{"taxonomy":"mod_loader","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod_loader?post=75820"},{"taxonomy":"minecraft_version","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/minecraft_version?post=75820"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}