点击上方“IT那活儿”公众号--专注于企业全栈运维技术分享,不管IT什么活儿,干就完了!!!
-Git被业内人士看作是目前世界上最先进的分布式版本控制系统。
1. SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网速慢的话,就纳闷了。
2. Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。
Linux,Git 之父:
Linus Torvalds,中文名:林纳斯·托瓦茨,是发明Linux操作系统的人,也是Git(分布式版本控制系统)的缔造者,Git被业内人士看作是最厉害的分布式版本控制系统。$ yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel
$ yum install git
接下来我们创建一个git用户组和用户,用来运行git服务:$ groupadd git
$ useradd git -g git
收集所有需要登录的用户的公钥,公钥位于id_rsa.pub文件中,把我们的公钥导入到/home/git/.ssh/authorized_keys文件里(.ssh/authorized_keys系统默认隐藏不显示),一行一个。$ cd /home/git/
$ mkdir .ssh
$ chmod 755 .ssh
$ touch .ssh/authorized_keys
$ chmod 644 .ssh/authorized_keys
1)首先我们选定一个目录作为Git仓库,假定是在根目录下的/home/repository/f5.git,输入命令:mkdir /home/repository
chown git:git repository/
cd repository
git init --bare f5.git
mkdir -p /home/c5paragon/apps/
cd /home
cd c5paragon/apps/
git init --bare k8s.git
chown -R git:git /home/c5paragon/2
cd D:\git
git clone git@1XX.1XX.12.63:/home/c5paragon/apps/c5paragon.git
*注:如果初始化远程仓库的话,要使用这个命令:git init --bare f5.git这样初始化的仓库并没有.git目录,只有.git目录下的文件。- 不使用--bare选项时,就会生成.git目录以及其下的版本历史记录文件,这些版本历史记录文件就存放在.git目录下;
- 而使用--bare选项时,不再生成.git目录,而是只生成.git目录下面的版本历史记录文件,这些版本历史记录文件也不再存放在.git目录下面,而是直接存放在版本库的根目录下面。
用"git init"初始化的版本库用户也可以在该目录下执行所有git方面的操作。但别的用户在将更新push上来的时候容易出现冲突。解决办法就是使用”git init --bare”方法创建一个所谓的裸仓库,之所以叫裸仓库是因为这个仓库只保存git历史提交的版本信息,而不允许用户在上面进行各种git操作,如果你硬要操作的话,只会得到下面的错误(”This operation must be run in a work tree”),这个就是最好把远端仓库初始化成bare仓库的原因。说白了,就是会创建一个裸仓库,裸仓库没有工作区,服务器上的Git仓库纯粹是为了共享,所以不让用户直接登录到服务器上去改工作区,并且服务器上的Git仓库通常都以.git结尾。$ chown -R git:git f5.git
通过 步骤2,我们已经在服务点创建了证书登录的目录,如果客户端要访问服务端,需要提供公钥到证书登录的目录中,公钥位于id_rsa.pub文件中,把我们的公钥导入到/home/git/.ssh/authorized_keys文件里,以下为客户端操作:打开客户端(“假设window系统”,前提是客户端也安装了git服务,鼠标右击选择“git bash”)随机目录下的git bash,输入ssh-keygen -t rsa -C "xuxingfqiang@shsnc.com",生成ssh私钥和公钥。此时 C:\Users\用户名.ssh 下会多出两个文件 id_rsa 和 id_rsa.pub:然后把id_rsa.pub文件放置在服务器/home/git/.ssh/authorized_keys文件中。将服务器上的/home/repository/f5.git库克隆到本地。- git clone [URL]git是用户名@服务器地址:仓库路径
$cd D:\git
$git clone git@ip:/home/repository/f5.git
本地仓库在git目录下,先进入f5目录中,commit提交到本地git,之后才提交到服务器远程库。$ cd D:\git\\f5
$ git add *
$ git commit -am 'f5'
$ git push -u origin master
$ cd D:\git\\k8s
$ git add *
$ git commit -am 'k8s'
$ git push -u origin master
$ cd D:\git
$ git clone git@ip:/home/repository/f5.git
$ git clone git@ip:/home/repository/k8s.git
*注:远程库的名字就是origin,这是Git默认的叫法,也可以改成别的。把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令,git push origin master就行它会列出你指定的每一个远程服务器的简写。如果你已经克隆了自己的仓库,那么至少应该能看到 origin - 这是 Git 给你克隆的仓库服务器的默认名字。要查看远程库的详细信息 使用 git remote –v。会显示需要读写远程仓库使用的 Git 保存的简写与其对应的 URL,如果你的远程仓库不止一个,该命令会将它们全部列出。