Step 1) Install Git
> yum install git
---> Running transaction check
---> Package git.x86_64 0:1.7.1-3.el6_4.1 will be installed
Is this ok [y/N]: y
...lots of output...
Step 2) Create a user and group named "git"
The groupadd command will create a new group, with the next available group id in the /etc/group file. The useradd command will create the home directory for the git user, the default location is the /home directory. The repository can be anywhere that the git user has write privileges such as /data, /opt or /usr/local/git depending on your personal preferences.
Step 3) Setup ssh access.
Git clients (your developers) will be connecting to this git server using ssh keys, we must create the authorized_keys file to hold the clients public keys.
> su - git
> mkdir .ssh
> chmod 700 .ssh
> touch .ssh/authorized_keys
> chmod 600 .ssh/authorized_keys
Step 4) Create an empty repository replacing <project> with the name of your project.
As the git user
> cd /opt/git
> mkdir <project>
> cd <project>
> git init --bare
git init --bare
Initialized empty Git repository in /opt/git/project/
Step 4) Creating a private / public ssh key pair.
Before you can grant access to your GIT repository you will need to gather your developers public keys. Here are a couple of methods for creating a ssh key pair. It does not matter what method you use to generate your key pair as ssh keys are truly portable over all platforms.
> ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/pete/.ssh/id_rsa):
Created directory '/home/pete/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/pete/.ssh/id_rsa.
Your public key has been saved in /home/pete/.ssh/id_rsa.pub.
The key fingerprint is:
> cat .ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAzng5JGKNLHFap6R5L6IOItG04WydGaxDIHM80AQNAdFVqjbU4QX4Z66UfmGR7l2Dit5ouoLWOMMrI3Qh0hXzsRooQLPYKbEtq/mWJvhcPCReURKFjiE+Po62AaGs9xHz/tl6D15/vOtFeOza4Z6ECkHgPGCJdmhXAib2/5IJgBMhop67TFwbDOc0JmMOB9y/1yIrd+nsmaYTy/OZVFNddFywB8XZ9JaCB/HVeGajzXdc8WdMKIODExHMzEcddHZq9sTt5pPEXRPmED0SMs0r+X9Kn+zTj0OPtQwWOyxxfCko7OnxBQL+kec8Ypl1xWVrqHImI8Xhs1UZdUsVCU6pww== email@example.com
Step 5) Enabling access to the repository
To use the new repository we need to add developer SSH public keys to the authorized_keys file located on the GIT repository server. It is as simple as appending each developers public key to the authorized_keys file. Your developers will need to send you your their public key.
If your developers have emailed you their public key you can simply cut and past the text file into your authorized_keys file. Otherwise if you have saved them locally you can do something similar to the following.
> cd /home/git
> cat /tmp/id_rsa.pete.pub >> .ssh/authorized_keys
Step 6) Connecting to the GIT repository, and importing your project.
There are many tools that can be used to connect to the GIT repository from a Windows client, including the plugins for Eclipse, TortoiseGit, cygwin, or the git bash command line. Many developers I've worked with have used the command line and the Eclipse IDE to develop their code. For this tutorial I'll be using the git bash command line. Make sure you've installed a GIT client, and replace <GitServerIP> with the IP or domain name of your GIT server.
On the client system;
The following steps assume that you actually have files or code or anything else you want already in your project directory on the client system.
Test your ssh connection to the GIT server, this will log the client into the GIT server. Obviously giving the client user access to a shell prompt on your GIT server is probably not a good idea. Refer to this reference for how to restrict access.
> ssh git@<GitServerIP>
The authenticity of host '10.11.12.13 (10.11.12.13)' can't be established.
RSA key fingerprint is 7c:e6:3d:18:c1:0a:6e:f6:1d:7c:96:f4:f5:c3:da:a5.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.11.12.13' (RSA) to the list of known hosts.
> cd project
> git init
Initialized empty Git repository in /home/pete/project/.git
> git add .
> git commit -m 'First Commit'
> git remote add origin git@<GitServerIP>:/opt/git/project
> git push origin master
Counting objects: 49, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (39/39), done.
Writing objects: 100% (49/49), 15.32 KiB | 0 bytes/s, done.
Total 49 (delta 1), reused 0 (delta 0)
* [new branch] master -> master
Problem: You receive prompts for pass phrase or password,
Solution 1) Verify which ssh.exe you are using and that your id_rsa and id_rsa.pub files are located where that ssh.exe expects them. Especially if you are using cygwin.
Solution 2 ) Modify your git workspace .git/config file to point to the correct repository URL
The .git/config file is located in the project directory mentioned above for example; /home/pete/project/.git/config
Manually: edit the file then look for the [remote "origin"] directive.
Command Line: git remote set-url origin firstname.lastname@example.org:/opt/git/project
Solution 3) If you installed Tortoise Git
By default Tortoise Git sets the system Environment variable GIT_SSH to something like this. C:\Program Files\TortoiseSVN\bin\TortoisePlink.exe.
Reset/SET GIT_SSH system environment variable to:
C:\Program Files (x86)\Git\bin\ssh.exe
Windows7: Control Panel -> System Properties -> Advanced -> Environment Variables
Open up Tortoise Git Settings -> Network
Remove TortoisePlink.exe from the SSH CLient: setting
Some have had success just entering ssh.exe
Others have put the full path to: C:\Program Files (x86)\Git\bin\ssh.exe
Others have been successfull with the path to ssh.exe as installed by java.
Reboot/re-open a new git-bash window hopefully it worked. (this solution didn't work for me but did for other users)
Solution 4)Temporarily Reset GIT_SSH in your shell
> export GIT_SSH="C:\Program Files (x86)\Git\bin\ssh.exe"
Solution 5) Permanently Reset GIT_SSH every time you open a shell.
Create a .bashrc file, and add the above export line
> cd ~
> vi .bashrc
export GIT_SSH="C:\Program Files (x86)\Git\bin\ssh.exe"
GIT Setting up the Server