LINUX - git - git server and clients setup - git tutorial

GIT TUTORIAL
############
############

Note: the ssh server on www.gitserver1.com is on port 50505 not 22, so if you have port 22 just leave out the part that says '-p 50505'

GOOD CHEAT SHEETS:
http://byte.kde.org/~zrusin/git/git-cheat-sheet-medium.png
http://www.git-tower.com/blog/git-cheat-sheet-detail/


AFTER THIS I WILL LINK TO MY GIT WEBSERVER TUTORIAL ON HOW TO SETUP cgit:
http://www.kossboss.com/linux---cgit---how-to-install-cgit-on-gitserver

MAKING THE SERVER
#################

(PC: DEBIKOS) SETUP GIT SERVER (gitserver or www.gitserver1.com):
########################################################

sudo -i

apt-get update
apt-get install git
apt-get install git-core

adduser git

It will ask for fullname,address, all are optional... The password is important, write it down, remember it (I chose $PASSWORD)

cd ~

mkdir .ssh

ADDING PROGRAMMER KEY TO GIT
############################

(PC: KNAS312) GO TO COMPUTER THAT WILL BE GIT CLIENT (a programmers computer)
#############################################################################

Copy their public key over to authorized keys on gitserver

cd ~/.ssh/id_rsa.pub | ssh -p 50505 root@www.gitserver1.com "cat - >> /home/git/.ssh/authorized_keys"

It will ask for the password that you chose during "adduser git"


To test public key: 'ssh git@www.gitserver1.com -p 50505' for now because git users shell is /bin/bash you will get a prompt, but in the future we will secure this user down by giving him git-shell instead of bash, the git-shell will not give a prompt but will just say something

STARTING PROJECT
################

(PC: DEBIKOS) BACK TO GIT SERVER
################################


Lets make the folder where the git projects will be saved, opt is an okay place.

# cd /opt/
# mkdir git
# chown -R git:git /opt/git
# cd /opt/git

NOTE: my first project is called hr (The app name is 'hr', or 'human readable')

# mkdir hr

# cd /opt/git/hr

Everytime you want to start a new project, go into the folder:
# git --bare init

FIRST COMMIT
#############

(PC: KNAS312) GO TO COMPUTER THAT WILL BE GIT CLIENT (a programmers computer)
#############################################################################

On this PC the 'hr' program is in /root/c/hr - programmers can store their programs where ever they want

cd /root/c/hr

NOTE: even if you have files there its okay to do this, you will keep your files, the git init will make some hidden git folder that store all of git information

git init

CONFIGURE USERNAME AND EMAIL
============================

By default it uses the username and email on the user on this PC

git config --global user.email "boss@kossboss.com"
git config --global user.name "kossboss"


FIRST COMMIT
============

git add .
git commit -m 'initial commit'

PUSH IT TO SERVER
=================

First we need to setup the server and call it the origin

GENERAL FORM
# git remote add origin git@gitserver:/opt/git/project.git 
Note: project.git is a folder which has all of the project

MY FORM (this is the form that is required if your ssh doesnt use the typical port 22)
# git remote add origin ssh://git@www.gitserver1.com:50505/opt/git/hr

HOW TO SUBMIT CHANGES FROM NOW ON
=================================

git add .
git commit -m 'some comment such as did this and that'
git push origin master

(ON: ANOTHER DEVS PC) GETTING THE WORK
########################################

First add the public key over
cd ~/.ssh/id_rsa.pub | ssh -p 50505 root@www.gitserver1.com "cat - >> /home/git/.ssh/authorized_keys"

mkdir -p /root/work
cd /root/work

git clone@gitserver:/opt/git/project.git
git clone ssh://git@www.gitserver1.com:50505/opt/git/hr


(ON: DEBIKOS) ON THE GITSERVER LETS SECURE GIT
###############################################

# su root

find out where your git-shell is

# which git-shell

it should be at '/usr/bin/git-shell'

# vim /etc/passwd

change
'git:x:1000:1000::/home/git:/bin/sh'

or
'git:x:1000:1000::/home/git:/bin/bash'

to:
'git:x:1000:1000::/home/git:/usr/bin/git-shell'


Now when you try to log in via an ssh prompt with git user you will not get a shell:

For example with a typical server
$ ssh git@gitserver

or in my case

# ssh git@www.gitserver1.com -p 50505 

OUPTUT:
fatal: What do you think I am? A shell?
Connection to gitserver closed.


NEXT: WANT TO SETUP cgit?
##########################

This is for web interface for your git


SelectionFile type iconFile nameDescriptionSizeRevisionTimeUser
Comments