2.11.6. Work with Git

If you need your repository to be inaccessible to outsiders and all actions with it to be fully controlled by you, you can create your own Git server by following the steps described below.

Git is installed by default on the hosting:

[example@hosting]$ git --version
git version 2.16.1

Perform the following actions:

  1. Navigate to the home directory:
    cd ~
  2. Create a directory for the Git project:
    mkdir repo.git
  3. Navigate to the created directory:
    cd repo.git
  4. Create an empty Git repository (the bare parameter creates a repository without a working directory, you will not be able to execute git add, commit, etc. commands from the server):
    git init --bare
  5. Check if the repository directories have been created by executing the command ls:
    [example@hosting]$ ls
    branches  config  description  HEAD  hooks  info  objects  refs

There are two main approaches to creating a Git repository:

  1. Importing an existing project or directory into Git.
  2. Cloning an existing repository from the server using the command git clone.

Let's use the first one.

Perform the following actions:

  1. Create a directory for the Git project in the user's home directory and navigate to it by executing the commands:
    cd ~
    mkdir repo
    cd repo
  2. Initialize the repository:
    git init
  3. Verify what has been created in the repository directory by executing the command ls -a:
    [example@hosting]$ ls -a
    .  ..  .git

In this directory, you will work with project files, while the hidden directory .git stores the entire Git history and metadata of your project, including all objects (commits, trees, blobs, tags), all pointers to various branches, and much more.

  1. Create 3 test files:
    touch index.php index1.php index2.php
  2. Add files to the index:
    git add .
  3. Commit the files:
    git commit -m 'First commit'
  4. Add a remote repository:
    git remote add developer login@host:/home/hosting_account_name/repo.git
  5. Check which changes will be sent to the server:
    git status

    It is visible that the current branch is master and 3 new empty files will be uploaded to the server:

    [example@hosting]$ git status
    On branch master
    
    No commits yet
    
    Changes to be committed:
      (use "git rm --cached <file>..." to unstage)
    
            new file:   index.php
            new file:   index1.php
            new file:   index2.php
  6. Send files from the local PC from the master branch to the developer server:
    git push developer master
  7. If you need to fetch changes from the server, use the command:
    git pull developer master
To avoid entering the SSH password each time you connect to a remote server, configure key-based authentication.
Content

    (3)