传输协议: 本地传输,SSH协议,Git协议,HTTP协议
 
git clone /home/git/project.git                      // 本地clone
git clone ssh://user@server:/home/git/project.git     // 使用SSH协议clone, 可读写
git clone user@server:/home/git/project.git           // 默认使用SSH协议clone, 可读写
git clone http://example.com/git/project.git         // 使用HTTP协议clone, 只读
 
git clone --bare /home/myproject myproject.git       // clone为纯仓库
 
 
帐号管理方法
(ssh密钥方式有待研究, 群组方式可以)
 
最常用的帐号管理方法为: 
   在主机上建立一个 git账户,
   让每个需要写权限的人发送一个SSH公钥,然后将其加入git账户的 ~/.ssh/authorized_keys文件
 
1、服务器创建git用户
$ sudo adduser git
$ su git
$ cd
$ mkdir .ssh
 
2、开发者生成SSH公钥
$ su cxt
$ cd
$ mkdir .ssh
$ cd ssh
$ ssh-keygen    // 创建公钥私钥 id_rsa, id_rsa.pub
 
3、导入公钥到git用户的ssh目录下
$ su git
$ cd
$ cat /home/cxt/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
 
4、参考服务器搭建方式
 
5、git用户登录的防范措施
$ sudo vim /etc/passwd
$ git:x:1000:1000::/home/git:/bin/bash  改为
$ git:x:1000:1000::/home/git:user/bin/git-shell   // git用户只能用SSH连接来推送和获取git仓库, git用户不能使用主机shell了
 
$ su git
fatal: Interactive git shell is not enabled.
hint: ~/git-shell-commands should exist and have read and execute access.
 
$ ssh git@192.168.3.254     // 只能通过ssh访问git用户
 
 
6. 群组管理
   git用户所属群一般为git
$ grep 'git' /etc/group /etc/gshadow
/etc/group:git:x:1003:
/etc/gshadow:git:!::
 
将cxt用户加入git群组
$ gpasswd -a cxt git
 
更改/home/git下xxx.git目录群组权限
$ sudo chmod g+w -R /home/git/xxx.git
 
屏蔽/home/git/.ssh目录权限
$ sudo chmod 700 -R /home/git/.ssh     // 所有人都不能看到公钥
 
 
服务器搭建方式:
 
git init --bare     // 服务器
 
# 在John电脑上
$ cd myproject
$ git init
$ git add .
$ git commit -m "initial commit"
$ git remote add origin user@server:/home/git/project.git    // 远程分支第一个版本
$ git push origin master
 
# 在Josie电脑上
$ git clone user@server:/home/git/project.git
$ vim README
$ git commit -am "fix for the README file"          // 其他人clone与推送
$ git push origin master
 
 
客户端提交常见错误:
 
1. remote: error: insufficient permission for adding an object to repository database ./objects
  服务端没有可写目录的权限
  sudo chmod -R g+w xxx.git/.objects
 
2. $ ssh git@192.168.3.254
fatal: Interactive git shell is not enabled.
hint: ~/git-shell-commands should exist and have read and execute access.
Connection to 192.168.3.254 closed.
 
原因:
    按照提示,在git用户的主目录下面需要存在git-shell-commands目录

笔记一、Git服务器【转】的更多相关文章

  1. Git学习笔记(10)——搭建Git服务器

    本文主要记录了Git服务器的搭建,以及一些其他的配置,和最后的小总结. Git远程仓库服务器 其实远程仓库和本地仓库没啥不同,远程仓库只是每天24小时开机为大家服务,所以叫做服务器.我们完全可以把自己 ...

  2. CentOS7 编译安装 Git 服务器 Centos 7.0 + Git 2.2.0 + gitosis (实测 笔记)

    环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡) 系统版本:CentOS-7.0-1406-x86_64-DVD.iso 服务器IP:192.168.1.31 域 ...

  3. 使用自建Git服务器管理私有项目 Centos 7.3 + Git 2.11.0 + gitosis (实测 笔记)

    环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡) 系统版本:CentOS-7-x86_64-Minimal-1611.iso GIT服务器IP:192.168.1 ...

  4. Git服务器搭建笔记

    前言:最近公司要使用git服务器对Android4.4的源码进行版本控制,所以花了些时间在Ubuntu14.04上搭建了git服务器,正好前段时间也学习了下git的使用哈哈 ------------- ...

  5. 运维笔记--线上服务器git环境配置

    场景描述: 我们采用git去管理代码分支,本地开发环境,线上服务器多数情况下也会使用git去管理程序代码,那么新的一台服务器,如果指定了目标路径作为代码存放路径,该如何配置git环境, 以达到跟远程服 ...

  6. [开发笔记usbTOcan]用树莓派搭建私有Git服务器

    0 | 思路 在开始编程前,先创建一个版本管理库,以前一直用SVN,但目前用Git的还是比较,正好利用这个机会学习GIt. 想过使用Github提供的免费服务器,但项目目前还没有做开源的准备,于是就有 ...

  7. Windows下配置Git服务器和客户端 超全

    为了配合Redmine使用,特地用Git来做版本控制. Git Candy© 是一个基于ASP.NET MVC的Git分布式版本控制平台,Git Candy的目标是轻松干掉Bonobo,逐渐追赶Git ...

  8. Git 笔记三 Git的初步使用

    Git 笔记三 Git的初步使用 在上一篇中,学习了如何配置Git环境,这一篇,开始学习Git的初步使用.Git的初步使用还是很简单的.总体上知道git init, git clone, git ad ...

  9. git服务器的建立——Git折腾小记

    转自:http://blog.csdn.net/xsl1990/article/details/25486211 如果你能看到一些sshd相关的进程信息,则说明你已经有这个服务了,否则(或者你想更新的 ...

  10. 架设Git服务器

    架设Git服务器项目 Git Candy:http://github.com/Aimeast/GitCandy/ AE大神的作品, Git Candy© 是一个基于ASP.NET MVC的Git分布式 ...

随机推荐

  1. 【Python】可变对象和不可变对象

    Python在heap中分配的对象分成两类:可变对象和不可变对象.所谓可变对象是指,对象的内容是可变的,例如list.而不可变的对象则相反,表示其内容不可变. 不可变对象:int,string,flo ...

  2. SPOJ-SQRBR Square Brackets

    原题传送:http://www.spoj.pl/problems/SQRBR 动态规划. 设f[i][j]表示前i个位置在合法情况下缺少j个右括号的方案数. 转移方程为: f[i][j] = f[i- ...

  3. JSP Workshop

    http://www.cnblogs.com/ITtangtang/p/4126395.html 发现http://www.tutorialspoint.com/里的资料很全也很不错啊! 资料:htt ...

  4. iOS开发如何实现消息推送机制

    一.关于推送通知 推送通知,也被叫做远程通知,是在iOS 3.0以后被引入的功能.是当程序没有启动或不在前台运行时,告诉用户有新消息的一种途径,是从外部服务器发送到应用程序上的.一般说来,当要显示消息 ...

  5. [百度空间] [原] Empty base class optimization

    最近遇到了一个诡异的问题, 数组的数据不对, 最后发现是两个类型的大小不一样导致的. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ...

  6. Linux 搭建SVN 服务器(转)

    一. SVN 简介 Subversion(SVN) 是一个开源的版本控制系統, 也就是说 Subversion 管理着随时间改变的数据. 这些数据放置在一个中央资料档案库 (repository) 中 ...

  7. img图片底部出现莫名的下边距问题

    谷歌中这样是解释的: 图片底部的空隙实际上涉及行内元素的布局模型,图片默认的垂直对齐方式是基线,而基线的位置是与字体相关的.所以在某些时候,图片底部的空隙可能是 2px,而有时可能是 4px 或更多. ...

  8. uitableviewcell 和 uibutton

    如果cell上面只有一个button  可以设置button.tag=IndexPath.Row;得到当前点击的行数,设置button属性的时候,可以设置一个全局的button来记住当前点击的butt ...

  9. WinInet:HTTPS 请求出现无效的证书颁发机构的处理

    首先,微软提供的WinInet库封装了对网页访问的方法. 最近工作需要从https服务器获取数据,都知道https和http网页的访问方式不同,多了一道证书认证程序,这样就使得https在请求起来比h ...

  10. jquery ajax post 传递数组 ,多checkbox 取值

    jquery ajax post 传递数组 ,多checkbox 取值 http://w8700569.iteye.com/blog/1954396 使用$.each(function(){});可以 ...