centos: 創建git帳戶

主要是創建git帳戶以後,禁止git登錄,以及git init --bare創建git倉庫的時候, 要cat /etc/passwd查看git帳戶 vim /etc/passwd 把git帳戶登陸改成: git:x:1001:1001:git version control:/home/git:/usr/bin/git-shell 這樣就能夠正常拉去,或者推送了html

Git服務器搭建python

  1. 安裝 #yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel #wget http://git-core.googlecode.com/files/git-1.9.0.tar.gz #tar zxvf git-1.9.0.tar.gz #cd git-1.9.0 #make prefix=/usr/local all #make prefix=/usr/local install #root用戶運行 查看版本號:git --version

安裝gitosis:gitosis爲Git用戶權限管理系統,經過管理服務端的/home/git/.ssh/authorized_key文件來執行對用戶權限的管理,是一個python模塊包 #yum install python python-setuptools #git clone git://github.com/res0nat0r/gitosis.git #cd gitosis/ #python setup.py install 顯示Finished processing dependencies for gitosis==0.2即表示成功git

2.2 客戶端安裝: #yum install git #git --version git version 1.7.1github

  1. ssh設置 客戶端生產密鑰並上傳到服務器端: #ssh-keygen -t rsa #scp ~/.ssh/id_rsa.pub root@192.168.56.1:~/

cat /xxx.pub << /.ssh/authorized_key 服務端查看已經上傳的密鑰:ls ~/id_rsa.pubshell

  1. 服務器上生成git用戶,使用git用戶並初始化gitosis 添加用戶git: #useradd -r -s /bin/sh -c 'git version control' -d /home/git git 設置權限: #mkdir -p /home/git #chown git:git /home/git

在服務器端生成管理庫: #sudo -H -u git gitosis-init < ~/id_rsa.pub Initialized empty Git repository in /home/git//repositories/gitosis-admin.git/ Reinitialized existing Git repository in /home/git/repositories/gitosis-admin.git/vim

註解:安全

  1. 生成的gitosis-admin爲Git的用戶訪問權限管理庫,gitosis經過這個git庫來管理全部git庫的訪問權限。
  2. 經過執行初始化,該公鑰的擁有者就能修改用於配置gitosis的那個特殊Git倉庫了

修改上傳權限: #chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-updatebash

  1. 客戶端導出管理 #mkdir -p /git-repo/ #cd /git-repo/ #git clone git@192.168.56.1:gitosis-admin.git #cd gitosis-admin #find . ./gitosis.conf ./keydir ./keydir/oot@vm1.pub

註解: gitosis.conf文件用來設置用戶、倉庫和權限的控制文件 keydir目錄則是保存全部具備訪問權限用戶公鑰的地方 ./keydir/root@vm1.pub:如前所述,該用戶具備訪問權限服務器

  1. 客戶端建立及設置管理項目 #cd /git-repo/gitosis-admin 查看已經上傳密鑰 #ls keydir/ root@vm1.pub

受權和權限控制 #vim gitosis.conf [gitosis]ssh

[group gitosis-admin] writable = gitosis-admin members = root@vm1 #顯示用戶root@vm1.pub是初始化gitosis公鑰的擁有者,是惟一能管理gitosis-admin項目的人

[group jay_fans] #組名稱 members = root@vm1 #密鑰用戶名 writable = git-test #項目名稱

  1. 初始、增長及使用項目git-test #cd /git-repo #mkdir git-test #cd git-test #git init #touch README #git add . #git commit -a -m "init git-test" #git remote add origin git@192.168.56.1:git-test.git #git push origin master 註解:在新項目git-test裏首次推送數據到服務器前,需先設定該服務器地址爲遠程倉庫,但你不用事先到服務器上手工建立該項目的裸倉庫— Gitosis 會在第一次遇到推送時自動建立。

  2. 客戶端增長其餘成員公鑰到系統中:經過添加用戶的公鑰到keydir目錄便可 #cd /git-repo/gitosis-admin #cp /path/to/member/public/key keydir/ #git add keydir/member.pub 修改gitosis.conf

[group jay_fans] #組名稱 members = jay # 新的密鑰用戶名 writable = git-test

提交修改: #git commit -a -m "granted jay commit rights to git-test" #git push 註解:gitosis其實是從服務器端的/home/git/.gitosis.conf文件讀取信息的,經過以上操做,會將新的權限信息寫入到該文件中,若是搞錯了配置,致使失去了推送權限,能夠經過修改該文件來從新設定,若是你手工編輯該文件的話,它會一直保持到下次向 gitosis-admin 推送新版本的配置內容爲止。 成員jay經過如下命令獲取代碼: #git clone git@192.168.56.1:git-test.git

4 Github的使用 GitHub是一個託管Git項目的網站,對於閉源項目收費,開源項目則免費。使用Github進行代碼發佈和託管的步驟以下:

  1. 登陸Github官網https://github.com/ ,申請Github帳戶,並建立名爲github-test的Repository
  2. 安裝Git客戶端(Linux) #yum install git git-gui
  3. 生成密鑰對,並拷貝到Github網站 #ssh-keygen -t rsa -C 「xxx@gmail.com」 xxx@gmail.com爲你註冊Github時的郵箱帳戶

登陸Github點擊Edit your profile->SSH keys,添加./.ssh/id_rsa.pub中的內容 4. 設置ssh不輸入口令 #eval ssh-agent #ssh-add

  1. 測試是否能鏈接上GIthub #ssh git@github.com PTY allocation request failed on channel 0 Hi rangochan! You've successfully authenticated, but GitHub does not provide shell access. Connection to github.com closed. 鏈接成功

  2. 配置Git全局用戶配置

git config --global user.name xxx

git config --global user.email xxx@gmail.com

xxx及xxx@gmail.com分別爲Github帳戶名和郵箱

  1. 建立本地新項目 #mkdir github-test #cd github-test/ #git init #touch README #git add README #git commit -m 'my first commit'

定義遠程服務器別名origin #git remote add origin git@github.com:xxx/github-test.git

本地和遠程實行合併,本地默認爲master #git push origin master

當經過Github以xxx對github-test做出修改時,因爲本地快照與Github遠程服務器上的不一致,會引發如下錯誤:

! [rejected] master -> master (fetch first) error: failed to push some refs to 'git@github.com:xxx/puppet' hint: Updates were rejected because the remote contains work that you do hint: not have locally. This is usually caused by another repository pushing hint: to the same ref. You may want to first integrate the remote changes hint: (e.g., 'git pull ...') before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details.

解決: 經過pull子命令更新Github項目中做出的更改 #git pull origin master 以後再執行git push origin master Counting objects: 8, done. Delta compression using up to 4 threads. Compressing objects: 100% (5/5), done. Writing objects: 100% (7/7), 714 bytes | 0 bytes/s, done. Total 7 (delta 0), reused 0 (delta 0)

登陸https://github.com/xxx/github-test ,可查看到github-test項目

  1. 更新文件 #vim README just for test 自動commit更改文件 #git commit -a

更新到遠程 #git push origin master

  1. 建立和合並分支 #git branch
  • master 顯示當前分支是master #git branch new-branch 建立分支

git checkout new-branch

切換到新分支

vi check.py

建立新文件

git add check.py

git commit -a -m "added a python script"

Commit 到本地Git

git push origin new-feature

合併到遠程服務器 若是new-branch分支成熟了,則能夠合併進master #git checkout master #git merge new-branch #git branch

  • master new-banch #git push 執行合併,master中也合併了new-branch中的更新 登陸到GitHub,點擊"Switch Branches"能夠更改分支來查看不一樣分支下代碼狀況。

上面的git服務器源已經失效了,能夠利用下面的 大綱:

1、前言

2、搭建Git服務器

yum安裝Git服務器

建立一個git用戶,用來運行git服務

建立客戶端登陸證書

初始化Git倉庫

禁用shell登陸

克隆遠程倉庫

3、安裝客戶端

Windows 客戶端

Linux 客戶端

4、總結

注,測試機 CentOS 5.5 x86_64,Git 服務器版本:git version 1.8.2.1,客戶端版本:git version 1.9.2.msysgit.0。全部軟件請到這裏下載:http://msysgit.github.io/。

1、前言

在上一篇博客中咱們主要講解Git是什麼,Git的基本原理,講解一些有關Git的基礎知識,讓咱們簡單的瞭解一下Git,固然咱們還有不少問題沒有搞清楚,嘿嘿!無論理怎麼樣,在咱們弄清楚這些問題以前,咱們得有臺Git服務器是吧,嘿嘿!好了,下面咱們就來一塊兒搭建一臺Git服務器。

2、搭建Git服務器

1.yum安裝Git服務器

[root@git ~]# cd src/ [root@git src]# wget http://dl.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm [root@git src]# rpm -ivh epel-release-5-4.noarch.rpm Preparing... ########################################### [100%] package epel-release-5-4.noarch is already installed [root@git ~]# yum list [root@git ~]# yum install -y git

2.建立一個git用戶,用來運行git服務

[root@git ~]# adduser git

3.建立客戶端登陸證書

這邊上傳本地到服務器是用scp scp /local/xxx.file servername@serverip:/xxx/xxx/name 會提示輸入servername服務器名的密碼,輸入便可上傳 上傳完成後經過兩種方式複製pub公鑰到authorized_keys 1 cat xxx.pub >> /xx/authorized_keys 2 vim -On xx.pub /xx/authorized_keys 能夠雙屏開啓vim,直接在裏面選中一行yy,ctrl+w再按左右鍵,進入另外一欄p粘貼便可

注,收集全部須要登陸的用戶的公鑰,就是他們本身生成的id_rsa.pub文件,把全部公鑰複製到/home/git/.ssh/authorized_keys文件裏,一行一個。嘿嘿!

1).客戶端生成id_rsa.pub文件的命令

$ ssh-keygen -t rsa $ cat .ssh/id_rsa.pub

注,一路回車便可,將生成的id_rsa.pub,複製給管理員,幫你在服務器上增長一下,下次你用git時就不須要輸入用戶名和密碼了。

2).查看服務器上authorized_keys文件

[root@git ~]# cat /home/git/.ssh/authorized_keys

4.初始化Git倉庫

注,先選定一個目錄做爲Git倉庫,這裏是/data/git/project.git。

[root@git ~]# cd /data/git/ [root@git git]# git init --bare project.git [root@git project.git]# ls branches config description HEAD hooks index info objects refs

執行以上命令 Git命令,會建立一個裸倉庫,裸倉庫沒有工做區,由於服務器上的Git倉庫純粹是爲了共享,因此不讓用戶直接登陸到服務器上去改工做區,而且服務器上的Git倉庫一般都以.git結尾。而後,把owner改成git:

[root@git git]# chown -R git.git project.git [root@git git]# ls -l 總計 4 drwxr-xr-x 7 git git 4096 05-09 13:50 project.git

5.禁用shell登陸 注,出於安全考慮,第二步建立的git用戶不容許登陸shell,這能夠經過編輯/etc/passwd文件完成。找到相似下面的一行: [root@git ~]# cat /etc/passwd | grep git git:x:1001:1001:git version control:/home/git:/usr/bin/git-shell

改成: [root@git ~]# vim /etc/passwd git:x:1001:1001:git version control:/home/git:/usr/bin/git-shell 我這邊是改成/sbin/nologin 必須是在/etc/shells下面的shell,若是使用""空,則系統默認會分配shell,因此是沒用的 這樣,git用戶能夠正常經過ssh使用git,但沒法登陸shell,由於咱們爲git用戶指定的git-shell每次一登陸就自動退出。

6.克隆遠程倉庫 注,如今能夠經過git clone命令克隆遠程倉庫了,在各自的電腦上運行: 注,$ git clone git@git.jjhh.com:/data/git/project.git,其中git用戶名,git.jjhh.com服務器,/data/git/prgject.git是倉庫路徑。好了,到這裏服務器的搭建到這裏就完成了,下面咱們來安裝一下客戶端。

3、安裝客戶端 1.Windows 客戶端 1).下載客戶端 注,你們到這裏下載http://msysgit.github.io/。下面簡單演示一下安裝過程,比較簡單: 好了,到這裏就安裝完成了,安裝好之後會在桌面上有個圖標,你雙擊打開便可。以下圖: 2.Linux 客戶端 注,Linux客戶端安裝就比較簡單了,直接用yum安裝一下就好! [root@test ~]# yum install -y git 到這裏git就安裝完成了,下面咱們查看一下版本: [root@test ~]# git --version git version 1.8.2. 下面咱們生成公鑰並複製到服務器上:

[root@test ~]# ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Created directory '/root/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: 48:3c:22:76:02:f1:a2:e5:27:22:cb:4f:a7:a0:98:9d root@test.com [root@test ~]# cat .ssh/id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAwrmgNAca77BKzXl6BP11fdaclAoWfW+x4kPDZMPj1zFoML9JfOAS7DGY9quLMitwwfg5+U7zP/egPmAhSKCECubmodzMucnRSkJGgKCt1SlctRNDRN3OIvrecAtdZfDcBaWKLjaVzGPmhweLhr6HzfqeZU09Ccis4yK3RMwip2f+K1ZZVIOKUmL4AVFl9dqtxnQ4HlW61PUxvM/ug2M68Z0jQk5DVG8w5+dvGqX1qr5YABD1NX5Jz6aUbVVx7yyoORENxu6SK83GI/V7eOkrvBMDh9nDdwvDhPhuhBDSfE+Xi92hPJPKdNroF1vx8HMvpHME20MmjSwavPrz+B18MQ== root@test.com

下面咱們複製id_rsa.pub裏的公鑰到服務器的authorized_keys文件中。

[root@git ~]# su git bash-3.2$ cd bash-3.2$ vim .ssh/authorized_keys 或者使用cat xxx.pub >> /xxx/authorized_keys

下面咱們clone一個倉庫到本地的目錄中。 [root@test ~]# cd /data/dev [root@test dev]# git clone git@git.jjhh.com:/data/git/project.git Cloning into 'project'... The authenticity of host 'git.jjhh.com (114.112.173.150)' can't be established. RSA key fingerprint is ca:ec:a2:7e:e6:89:ca:19:d3:93:7f:4b:c3:c0:c7:fd. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'git.jjhh.com,114.112.173.150' (RSA) to the list of known hosts. remote: Counting objects: 50, done. remote: Compressing objects: 100% (42/42), done. remote: Total 50 (delta 21), reused 0 (delta 0) Receiving objects: 100% (50/50), 4.02 KiB, done. Resolving deltas: 100% (21/21), done. [root@test dev]# ls project [root@test dev]# cd project/ [root@test project]# ls index.html 好了,到這裏咱們的git客戶端到這裏就所有安裝完成了。

相關文章
相關標籤/搜索