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客户端到这里就所有安装完成了。

相关文章
相关标签/搜索