git简介、安装、基本操作——Git折腾小记
这两天刚完成了一个小项目,整理资料发现现在写代码跟文档又没有版本控制的意识,刚好前两天电脑出问题,差点所有代码跟文档全丢掉,所以这两天又在自己的台式机上架起了git,做所谓的代码服务器,之前折腾过一次,因为时间原因没有总结下来,结果这次弄的时候,又得满世界找资料,所以这次准备总结一下,也做了一个参考资料汇总,以备以后再折腾时用。
git简介
git安装
git安装
sudo apt-get install git-core
非常简单吧!(当然,除了跨平台可能是git的优势跟特点外,安装简便肯定不是它的特点,因为很多其他软件也一样……)
ps -ef|grep "sshd"
如果你能看到一些sshd相关的进程信息,则说明你已经有这个服务了,否则(或者你想更新的话),使用下面的命令安装openssh
sudo apt-get install openssh-server openssh-client
然后,安装git“服务器”
sudo apt-get install git-core
再然后,为自己配置身份信息,这样多个人提交代码的时候,就可以方便的查看是谁提交的,该如何联系ta了(如果该机器只做服务器,不做开发,本步骤应该可以省略)
git config --global user.name "yourname"
git config --global user.email "your@email.com"
sudo useradd -m git
sudo passwd git(change to yours)
说明:上述命令生成一个用户名与密码均为git的账户,也可以自己创建别的用户名跟密码,只要进行相关操作(比如clone)时指定用户名即可(本文章一律以git为例),-m 选项是让其在home目录下生成用户的主文件夹,我们的代码仓库会布置在这个主文件夹下。
sudo mkdir /home/git/repositories # 最好使用repositories作为文件夹名称,这样可以简化后面的操作
sudo chown git:git /home/git/repositories
sudo chmod 755 /home/git/repositories
至此,一个简单(非常简单)的git服务器已经搭建好了,可以自己创建一个简单的工程测试一下。
为了方便后面的操作,我们先切换到git用户下su git
在respositories下新建一个目录(仓库),并切换到这个目录
mkdir helloworld cd helloworld
在此处初始化一个空的仓库(只能接受push/pull代码,不能本地commit)
git --bare init
好了,一个空的仓库建立好了,用另外一台安装了git的机器(比如你的开发机)测试一下,此处假设你上面所用的服务器IP为192.168.0.123
git clone git@192.168.0.123:/home/git/repositories/helloworld
然后在开发机上进行一些基本操作测试:为这个项目add一些文件,然后commit,然后push,如果除了要几次输入git用户的密码外,其他一切正常的话,那说明上面的安装与配置就已经成功了
在上面的测试过程中,是不是发现那个clone的路径好长,很容易错?几个步骤都需要输入git用户的密码(clone、push),是不是很烦,而且照这个节奏,每增加一个开发成员,就得告诉他git用户的密码,是不是既繁琐又不安全?所以,如果能clone的时候只要指定项目名称,clone/push/pull自动完成身份认证,并且最好能对不同的仓库给予不同用户不同的权限,那就好了!接下来介绍的工具与配置就可以搞定这一切,让git仓库的管理变得更简单,操作更方便!
# 某开发机上 ssh-keygen #接下来一路回车就好了,在默认目录下生成默认密钥文件 cp ~/.ssh/id_rsa.pub /path/to/one/visiabl/fold/ #将隐藏文件夹下的公钥文件拷贝到一个可以文件夹下(如果接下来用scp提交,此步骤可省略) # 将上面的公钥文件以某种方式提交给服务器# 管理员在服务器下 # 将开发机提交上来的公钥文件,添加到/home/git/.ssh/authorized_keys文件中(每行一个)
gitolite安装
su git
上面说过,gitolite本质就是根据你的配置,自动生成authorized_keys文件,所以它要求你的authorized_keys文件必须是空的,或者不存在,所以我们干脆删了它(请注意一定要切换到git用户,否则,误删除了其他用户下的authorized_keys文件导致服务器的其他功能受影响,那就悲剧了,这应该也算是为什么要专门弄一个git用户来管理的原因吧)
rm ~/.ssh/authorized_keys
然后,gitolite在初始化时需要通过某一用户的公钥文件指定一个超级管理员,gitolite安装成功后,只有这个超级管理员可以更新gitolite以更新各种权限控制(包括对其自身的更新权限控制),所以在初始化时需要指定该超级管理员账户的公钥文件(最好直接将其拷贝到git用户的主文件夹下)(下面的示例程序使用同一服务器上的另一常用管理员用户admin)
su admin
ssh-keygen
sudo cp ~/.ssh/id_rsa.pub /home/git/id_rsa.pub
su git
好~准备工作已经完成了,开始安装gitolite
cd ~ # 回到git主文件夹下
git clone git://github.com/sitaramc/gitolite # 获取gitolite的源码
mkdir -p $HOME/bin #为gitolite的二进制文件生成创建目录
gitolite/install -to $HOME/bin # 编译生成安装文件
$HOME/bin/gitolite setup -pk id_rsa.pub # 安装并初始化,指定id_rsa.pub公钥文件对应的用户为超级管理员
Bingo! gitolite安装完成!不过,你要用它来进行管理,那还需要一定的操作。上面提到,gitolite安装后本身是一个特殊的git版本库——gitolite-admin,分布式的进行修改,然后通过push的方式提交,其会通过钩子脚本执行权限更新。看一下上述步骤的最后一步你会发现,gitolite自动生成了两个版本库:gitolite-admin.git和testing.git,其中的gitol-admin.git就是那个特殊的神奇版本库。所以,接下来我们要做的,就是回到你刚刚指定的超级管理员账户的电脑跟账户下,clone出gitolite-admin这个特殊的git版本库(当前情况下,只有该超级管理员账户可以clone并更新gitolite-admin这个版本库),然后根据自己的需要对其进行配置(如添加更多的管理员账户、添加新的版本库并为不同的用户指定权限)
su admin # 回到指定的超级管理员账户
git clone git@192.168.0.123:gitolite-admin.git # clonegitolite-admin这个特殊的版本库
如果上面的步骤都成功了的话,应该可以查看到有一个gitolite-admin的文件夹,文件夹下有两个目录conf、keydir
# 假设你之前创建了helloworld版本库,现在使用git clone git@192.168.0.123:helloworld试图clone
FATAL: R any helloworld id_rsa DENIED by fallthru
(or you mis-spelled the reponame)
fatal: The remote end hung up unexppectedly
repo helloworldRW+ = id_rsa
3、commit到本地
git commit -am 'add the helloworld repo and add RW+ to id_rsa'
4、push到git仓库
git push
如果push成功,当前超级管理员用户应该就可以成功clone helloworld版本库,并进行添加、删除、修改与push等操作了。
git基本操作
git简介、安装、基本操作——Git折腾小记相关推荐
- Django工具:Git简介与基本操作
1.Git简介: 1.Git是目前世界上最先进的分布式版本控制系统 网址:http://github.com 2.总结git的两大特点: 版本控制:可以解决多人同时开发的代码问题,也可以解决找回历史代 ...
- 极品,git简介,安装,方法
git 是什么 简单来说也就是版本管理器. 版本管理器,基本上也分为两种: 1.集中式管理:代表svn 2.分布式管理:代表git 集中式管理(svn)会出现问题-单点故障 单点故障:把所有版本,所有 ...
- GitHub使用教程详解(下)——Git的安装以及Git命令详解
上一篇GitHub使用教程详解(上)--官网操作指南[翻译],是针对官网的guide进行了翻译,其实个人来说,我是很不喜欢那么操作的,又要等待页面加载,操作又慢!程序员嘛,还是直接敲入命令代码更迅速高 ...
- 三、Git本地仓库基本操作——git仓库忽略跟踪文件
1. .gitignore文件 在工作区中的文件内容,很多时候我们基本只关注源文件.所以,肯定有些文件是不想使用git去管理的,比如: 编译生成的中间文件 相关的IDE工程文件(当然也可以进行git管 ...
- Git配置安装使用教程操作github上传克隆数据
Git是何方神圣? Git是用C语言开发的分布版本控制系统.版本控制系统可以保留一个文件集合的历史记录,并能回滚文件集合到另一个状态(历史记录状态).另一个状态可以是不同的文件,也可以是不同的文件内容 ...
- 【Git】Git下载安装与使用(一)
目录 1. 前言 1.1 什么是Git 1.2 使用Git能做什么 2. Git概述 2.1 Git简介 2.2 Git下载与安装 3. Git代码托管服务 3.1 常用的Git代码托管服务 3.2 ...
- git 的安装和项目建立
1.首先在git官网下载相应的系统需要的git安装包 2.查看git是否安装成功 git --version 3.更改gitconfig 文件 vim ~/.gitconfig (此次有个地方 ...
- Git 的安装、使用、分支、命令 一篇博客全都学会
目录 1 版本控制 1.1 什么是版本控制 1.2 为什么需要版本控制 2 Git概述 2.1 Git的工作机制 2.2 分布式版本控制工具与集中式的区别 2.3 Git是如何诞生的 3 Git的安装 ...
- Git常用命令——基本操作
Git常用命令--基本操作 Git命令总览 SwitchdeMacBook-Pro:git-tutorial switch$ git --help -a usage: git [--version] ...
- 廖雪峰Git教程笔记与总结 -- Git简介、常用命令、分支管理
本文主要用于记录阅读Git教程 - 廖雪峰的官方网站后的一些心得笔记,并且对git一些常用命令做一个整理总结. 本文要点分为:1.Git简介:2.Git常用命令:3.Git分支管理. 一.Git简介 ...
最新文章
- Sharding-JDBC教程:Spring Boot整合Sharding-JDBC实现数据分表+读写分离
- 数据包头分析---网络字节序与主机字节序
- 皮一皮:童话里都是骗人的...
- 云炬随笔20211126(2)
- HDOJ-3785 寻找大富翁(优先队列)
- 1900美元,你想要机器女朋友,还是想要女朋友?
- 企业实战02:Oracle数据库的安装和卸载
- php多线程操作同一文件
- 使用R包qpdf用一行代码将多个pdf合并为一个pdf
- android minicap web,使用minicap对安卓手机快速截屏
- java常用设计模式详解及应用
- 用JavaScript+HTML实现双色球随机摇号效果
- Symantec Endpoint Protection v14.2企业版介绍
- 复现awvs——CVE-2020-1938(CNVD-2020-10487)tomcat ajp 文件包含漏洞
- JAVA表达爱意_520表白日;程序员不会说爱?来一种属于程序员的满满爱意
- 修改文件后是否需要重启服务器
- 新电脑到手后,如何设置?
- 【20保研】北京航空航天大学计算机学院2019年全国优秀大学生夏令营活动通知...
- 【条形码识别】基于计算机视觉实现二维条形码识别含Matlab源码
- WIN7系统36887事件解决方案