====== 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 ==
replace location with your desired location
mkdir -p /data/git/bumper.git
cd /data/git/bumper.git
== Create bare repository ==
git --bare init
=== Initial Synchronize with client ===
== Initializing commit ==
replace project location with desired location
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