Table of Contents

GIT Repository

Setting up GIT

Create Server

Define User
git config --global user.name "k2patel"
git config --global user.email "k2patel@live.com"
Create location for Repository

<note tip>replace location with your desired location</note>

mkdir -p /data/git/bumper.git
cd /data/git/bumper.git
Create bare repository
git --bare init

Initial Synchronize with client

Initializing commit

<note tip>replace project location with desired location</note>

cd /data/project/bumper/
git init
git add .
git commit -m "Initial Commit"
Define server and push files

For Local

git remote add origin /data/git/bumper.git
git push origin master

For Remote

git remote add origin ketan@reposerver:/data/git/bumper.git
git push origin master

Backup

To do backup on existing git repo please follow steps below.
Login to master machine.
Considering you already have key based access between master and backup server.

list available remote repository on master
git remote -v
Now create bare repo on backup server
cd $HOME
git --bare init --shared test.git
On Master Server

after you taste your login.

cd ~/test.git
git remote add backup --mirror git@backup.k2patel.com:test.git
git push backup
cat .git/config

Result of last line should should contain text like the next block.

# [remote "Backup"]
#   url = git@backup.k2patel.com:test.git
#   fetch = +refs/*:refs/*
#   mirror = true

Script for Backup

#!/bin/bash
#Build by. kpatel
# k2patel@hotmail.com
 
## Nightly Backup of Repository.
 
## Variables -- ( change According to your need )
repohome=(/home/backup/test.git /home/backup/test2.git )
 
export receipients="k2patel@sify.com k2patel@hotmail.com"
 
## Static 
export git=$(which git)
 
## Methods 
notify(){
    for n in $receipients; do
        echo $1 | /bin/mail -s "[GIT] Backup $k2  Failed" $n
    done
}
 
## Programm
for k2 in ${repohome[@]}; do
    echo $k2
    if cd $k2 && $git push backup ; then
        echo "done"
    else
        notify "GIT Backup Failed, $k2"
    fi
done

Git reset local

following command can be used for following purpose :
To discard all local changes and restore it to the remote repository.
When you have error Your branch is ahead of 'origin/master'

git reset --hard origin/master
git pull

Git Submodule

Clone Repository including submodule

git clone --recursive git@github.com:k2patel/repo.git

clone submodule from existing project

git submodule update --init --recursive

To initialize single submodule

git submodule update --init modules/repo

Pull changes from all submodule

git submodule foreach git pull origin master

Usefull when submodule HEAD and status HEAD messed up

git submodule update --init