title: Git™ Version Control created at: Fri Oct 18 2024 09:04:17 GMT+0000 (Coordinated Universal Time) updated at: Sat Feb 08 2025 14:21:42 GMT+0000 (Coordinated Universal Time) --- # Git™ Version Control # Overview The Git Version Control feature allows you to easily host Git repositories on your cPanel account. You can use Git to maintain any set of files (for example, a website’s files and assets, a software development project, or simple text files). For more information, read our [Guide to Git - How to Set Up Deployment](https://docs.cpanel.net/knowledge-base/web-services/guide-to-git-how-to-set-up-deployment) Documentation and [Git’s Documentation](https://git-scm.com/) . !! Note !! The system adds a post-receive hook to all cPanel-managed repositories. For more information, read Git’s [githooks](https://git-scm.com/docs/githooks) documentation. ## Git on the command line !! Important !! Without shell access, you can **only** create, clone, delete, and view repositories. If your cPanel account includes shell access, you can also use Git from the command line. You must use the command line to perform the following tasks: * SSH configuration to clone private repositories. For more information, read our [Guide to Git - Set Up Access to Private Repositories](https://docs.cpanel.net/knowledge-base/web-services/guide-to-git-set-up-access-to-private-repositories) documentation. * The use of multiple remote repositories. We recommend this use for advanced Git users only. You can use cPanel’s [*Terminal*](https://docs.cpanel.net/cpanel/advanced/terminal-in-cpanel) interface (*cPanel » Home » Advanced » Terminal*) to access the command line from within the cPanel interface. # Repositories !! Note !! When you clone a repository, the system may require a large amount of time to complete. The list of repositories will disable the options for the repository and will only display the repository name, repository path, and a progress message. !! If you add or remove Git repositories via the command line, you may see an incorrect list of repositories in this interface. Currently, **only** repositories that you created in this interface will appear in the list. The Repositories table lists the following information for all of your account’s cPanel-managed Git repositories: * *Repository* — The repository’s display name. * *Repository Path* — The repository’s directory. You can also perform the following actions: * *Manage* — Click to update the repository’s cPanel-managed settings or pull or deploy changes. * *History* — Click to open the [*Gitweb*](https://docs.cpanel.net/cpanel/files/gitweb) interface in a new browser tab. Gitweb allows you to browse the repository and view its history and contents. * *Remove* — Click to remove cPanel’s management of the repository. A confirmation message will appear. Click *Remove* again to delete the repository. !! Warning\ When you remove cPanel’s management of a repository, the repository will no longer appear in the interface, and you cannot use cPanel to deploy it. However, the system will not delete the repository directory or its data. To fully delete repository data, use cPanel’s [*File Manager*](https://docs.cpanel.net/cpanel/files/file-manager) interface (*cPanel » Home » Files » File Manager*) or your preferred method to manually delete the files. !! Remember\ When you clone a repository, the system may require a large amount of time to complete. The list of repositories will disable the options for the repository and will only display the repository name, repository path, and a message about the clone’s progress. ## Create a repository To create a new repository, perform the following steps: 1. Click *Create* in the top-right corner of the interface. A new interface will appear. 2. Select whether to clone an existing repository, create a new one, or add an existing one to the list of cPanel-managed repositories: ``` - To clone an existing repository, ensure that the _Clone a Repository_ toggle is enabled. Then, enter the clone URL for the repository that you wish to clone in the _Clone URL_ text box. !! Important ``` To clone private repositories, you must perform additional steps. For more information, read our [Guide to Git - Set Up Access to Private Repositories](https://docs.cpanel.net/knowledge-base/web-services/guide-to-git-set-up-access-to-private-repositories) documentation. ``` - To create a new repository or add an existing repository to the list of cPanel-managed repositories, set the _Clone a Repository_ toggle to disabled. !! Important !! This URL cannot contain a username-and-password pair. !! This URL must include the `http://`, `https://`, `ssh://`, or `git://` protocols or use the `[email protected]/path` format, where `user` represents the username, `example.com` represents the domain, and `path` represents the repository path. !! You cannot enter a local repository path. !! The system performs additional checks for clone URLs that use the `ssh://` protocol. For more information, read the [SSH host key verification](https://docs.cpanel.net/cpanel/files/git-version-control/#ssh-host-key-verification) section below. ``` 3. In the *Repository Path* text box, enter the path to the directory that will contain the repository. !! Note !! If the specified directory does not currently exist, the system will create it. !! If the specified directory already contains a repository, the system will automatically add it to the list of cPanel-managed repositories. !! This feature enforces several restrictions on repository paths. For more information, read the [Repository path restrictions](https://docs.cpanel.net/cpanel/files/git-version-control/#repository-path-restrictions) section below. !! Unless you’re adding an existing repository to the list, the directory must be empty. Subdomain directories contain a cgi-bin directory and may also contain a `.well-known` directory. You must move these before you can create a repository. 1. In the *Repository Name* text box, enter the desired display name for the repository. 2. To immediately create another repository, select the *Create Another* checkbox. 3. Click *Create*, or click *Return to Repository List* to return to the list of repositories. ## SSH host key verification If you entered an SSH clone URL, when you click *Create*, the system will automatically check for the remote server’s public SSH host key. The system stores this key in the `/home/user/.ssh/known_hosts` file, where `user` represents your username. * If the remote host is not registered with the system, click *Save and Continue* to add it to the file (register it). You can click *Show Host Identification Information* to view the host’s algorithm and SHA-256 and MD5 fingerprints. * If the remote host is already registered, the system will create the repository. * If the remote host’s public key has changed, the system will display a warning. * For third-party remote hosts, check for announcements about public key updates. Most companies that host repositories make announcements about these changes. * For remote hosts that you control, consider whether recent events on your system have caused changes to the public key, or contact your system administrator. The system also performs this check and will request verification of altered host keys when you change repository information or update the repository. !! Warning !! If you cannot verify the validity of a change, exercise caution, especially if your repository includes sensitive content. An altered SSH key may indicate a [Man-in-the-Middle attack.](https://docs.cpanel.net/knowledge-base/general-systems-administration/man-in-the-middle-attacks) ## Repository path restrictions This feature enforces several restrictions for repository paths. ### The .git directory !! Warning !! Do not modify or delete a repository’s `.git` directory or its contents. Modifications to this data can irreparably break the repository. The system globally denies public access to repositories `git` directories. ### Character restrictions You cannot create, delete, or view repositories with paths that include whitespace or any of the following characters ```javascript \ * | " ' < > & @ ` $ { } [ ] ( ) ; ? : = % #` ``` ### cPanel-controlled directories You cannot create, delete, or view repositories in the following directories: * `.cpanel` * `.trash` * `etc` * `mail` * `ssl` * `tmp` * `logs` * `.cphorde` * `spamassassin` * `.htpasswds` * `var` * `cgi-bin` * `.ssh` * `perl5` * `access-logs` ## Manage repositories Click *Manage* to modify or deploy repositories. Click *Basic Information* to view repository information, or click *Pull or Deploy* to pull or deploy changes. ### Basic Information * *Repository Path* — The repository’s directory. Click to open the directory for the repository in cPanel’s [*File Manager*](https://docs.cpanel.net/cpanel/files/file-manager) interface (*cPanel » Home » Files » File Manager*) in a new browser tab. * *Repository Name* — The repository’s display name. To modify this name, enter the new name and click *Update*. * *Checked-Out Branch* — The currently checked-out local branch. To check out a different branch, select the desired branch and click *Update*. * If you select a different branch, the system will automatically pull changes from the remote repository when it checks out that branch. * If the repository is a bare repository, the system will not display this information. * *Currently Checked-Out Branch* — The currently checked-out local branch. Click to open the Gitweb interface in a new browser tab. * *HEAD Commit* — This section of the interface displays information about the active branch’s HEAD commit (the most recent commit to the branch). If the repository does not include any commits for the current branch or is a bare repository, the system will not display any *HEAD Commit* information. Click *History* to open the [*Gitweb*](https://docs.cpanel.net/cpanel/files/gitweb) interface in a new browser tab. * *Commit* — The SHA-1 value for the HEAD commit. * *Author* — The HEAD commit’s author. * *Date* — The date of the HEAD commit. * The commit message for the HEAD commit. * *Remote URL* — The URL of the repository’s remote repository. * *Clone URL* — The URL to use to clone the repository to another location (for example, your local computer, another cPanel account, or a GitHub account). Click *Copy* to copy this URL to your clipboard. ### Pull or Deploy *Repository Path* — The repository’s directory. Click to open the directory for the repository in cPanel’s [*File Manager*](https://docs.cpanel.net/cpanel/files/file-manager) interface (*cPanel » Home » Files » File Manager*) in a new browser tab. !! Important !! You cannot modify the repository path for existing repositories. !! *Repository Name* — The repository’s display name. To modify this name, enter the new name and click *Update*. !! *Currently Checked-Out Branch* — The currently checked-out local branch. Click to open the [*Gitweb*](https://docs.cpanel.net/cpanel/files/gitweb) interface in a new browser tab. !! Note !! If the repository is a bare repository, the system will not display this information. !! *HEAD Commit* — This section of the interface displays the following information about the active branch’s HEAD commit (the most recent commit to the branch): !! *Commit* — The SHA-1 value for the HEAD commit. !! *Author* — The HEAD commit’s author. !! *Date* — The date of the HEAD commit. !! The commit message for the HEAD commit. !! Note !! If the repository does not include any commits for the current branch or is a bare repository, the system will not display this information. !! `</div> ` !! *Last Deployment Information* — This section of the interface displays the following information about the most recent deployment of the repository: !! *Last Deployed on* — The date of the deployment. !! *Last Deployed SHA* — The SHA-1 value for the deployed commit. !! *Author* — The deployed commit’s author. !! *Date* — The date of the deployed commit. !! The commit message for the deployed commit. !! *Update from Remote* — Click to pull changes from the remote repository and apply them to the cPanel-managed copy of the repository. The system pulls changes with [the `--ff-only` option](https://git-scm.com/docs/git-pull) and will only succeed if the branch’s HEAD commit is up-to-date or Git can fast-forward it. !! *Remote URL* — The URL of the repository’s remote repository. !! *Deploy HEAD Commit* — Click to deploy changes from the cPanel-managed repository. Deployment requires a `.cpanel.yml` file and at least one local or remote branch. !! The system runs the tasks that you configure in the `.cpanel.yml` file in order to deploy the repository. !! We strongly recommend that you check the `.cpanel.yml` file in your remote repository and not the cPanel-managed repository. !! The system cannot deploy changes for repositories with dirty working trees. !! For more information about deployment, read our [Guide to Git - Deployment](https://docs.cpanel.net/knowledge-base/web-services/guide-to-git-deployment) and [Guide to Git - How to Set Up Deployment](https://docs.cpanel.net/knowledge-base/web-services/guide-to-git-how-to-set-up-deployment) documentation.