Git 是由 Linux Torvalds 开发 的一个版本控制系统,现如今正在被全世界大量开发者使用。许多公司喜欢使用基于 Git 版本控制的 GitHub 代码托管。 根据报道,GitHub 是现如今全世界最大的代码托管网站 。GitHub 宣称已经有 920 万用户和 2180 万个仓库。许多大型公司现如今也将代码迁移到 GitHub 上。 甚至于谷歌,一家搜索引擎公司,也正将代码迁移到 GitHub 上 。
运行你自己的 Git 服务器
GitHub 能提供极佳的服务,但却有一些限制,尤其是你是单人或是一名 coding 爱好者。GitHub 其中之一的限制就是其中免费的服务没有提供代码私有托管业务。 你不得不支付每月 7 美金购买 5 个私有仓库 ,并且想要更多的私有仓库则要交更多的钱。
万一你想要私有仓库或需要更多权限控制,最好的方法就是在你的服务器上运行 Git。不仅你能够省去一笔钱,你还能够在你的服务器有更多的操作。在大多数情况下,大多数高级 Linux 用户已经拥有自己的服务器,并且在这些服务器上方式 Git 就像“啤酒一样免费”(LCTT 译注:指免费软件)。
虚拟机环境:
操作系统:CentOS Linux release 7.5.1804 (Core)
MySQL :mysql Ver 15.1 Distrib 10.2.17-MariaDB
NGINX :nginx version: nginx/1.14.0
PHP :PHP 7.2.9 (cli) (built: Sep 5 2018 12:19:11) ( NTS )
在你的服务器上安装 Git:
特别的,虚拟机即为我们的远程服务器,我们的本地环境即本地服务器。
1、安装Git及创建用户
# 安装Git
[root@localhost ~]# yum install git
# 创建一个git用户组、用户、密码,用来运行git服务
[root@localhost ~]# groupadd git [root@localhost ~]# adduser git -g git [root@localhost ~]# passwd git 更改用户 git 的密码 。 新的 密码: 无效的密码: 密码未通过字典检查 - 过于简单化/系统化 重新输入新的 密码: passwd:所有的身份验证令牌已经成功更新。
2、初始化Git仓库
首先我们选定一个目录作为Git仓库,假定是/srv/gitrepo/project.git/,在/srv/gitrepo目录下输入命令:
[root@bogon ~]# cd /srv [root@bogon srv]# mkdir gitrepo [root@bogon srv]# chown git:git gitrepo/ [root@bogon srv]# cd gitrepo # 创建一个空的Git仓库,服务器上的Git仓库通常都以.git结尾 [root@localhost gitrepo]# git init --bare project.git 初始化空的 Git 版本库于 /srv/gitrepo/project.git/ #以上命令Git创建一个空仓库,服务器上的Git仓库通常都以.git结尾。然后,把仓库所属用户改为git: [root@localhost gitrepo]# chown -R git:git project.git
3、克隆仓库
在另一台电脑上,也就是本机,安装git客户端,并且运行下面的命令:
$ git clone git@192.168.216.160:/srv/gitrepo/project.git
这里会提示你输入密码,输入你刚才为git账户分配的密码就可以了
4、验证安装
在本地Client的project目录下,创建一个文件:1.txt,内容随意,然后提交到远端服务器 192.168.216.160
$ cd project/ $ ls -al total 12 drwxr-xr-x 1 dell 197121 0 九月 14 12:15 ./ drwxr-xr-x 1 dell 197121 0 九月 14 12:15 ../ drwxr-xr-x 1 dell 197121 0 九月 14 12:15 .git/ $ git add * $ git commit -m "first" $ git push origin master
校验
在本地Client的另外一个目录下,克隆一下:看看text.txt文件是否存在,内容是否对;再次修改内容,提交到远程服务器。
dell@D170309 MINGW64 /c $ git clone git@192.168.216.160:/srv/gitrepo/project.git Cloning into 'project'... git@192.168.216.160's password: remote: Counting objects: 3, done. remote: Total 3 (delta 0), reused 0 (delta 0) Receiving objects: 100% (3/3), done. dell@D170309 MINGW64 /c $ cd project/ dell@D170309 MINGW64 /c/project (master) $ ls 1.txt #修改down下来的 1.txt文件 dell@D170309 MINGW64 /c/project (master) $ git status On branch master Your branch is up-to-date with 'origin/master'. Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: 1.txt no changes added to commit (use "git add" and/or "git commit -a") dell@D170309 MINGW64 /c/project (master) $ git add * dell@D170309 MINGW64 /c/project (master) $ git commit -m "second" [master b5e963e] second 1 file changed, 1 insertion(+) dell@D170309 MINGW64 /c/project (master) $ git push origin master git@192.168.216.160's password: Counting objects: 3, done. Writing objects: 100% (3/3), 230 bytes | 115.00 KiB/s, done. Total 3 (delta 0), reused 0 (delta 0) To 192.168.216.160:/srv/gitrepo/project.git ae35b4f..b5e963e master -> master dell@D170309 MINGW64 /c/project (master) $
再次回到之前,第一次clone下来的项目目录。拉取新的代码,然后查看 本地1.txt文件是否更改
dell@D170309 MINGW64 /d/project (master) $ git pull git@192.168.216.160's password: remote: Counting objects: 5, done. remote: Total 3 (delta 0), reused 0 (delta 0) Unpacking objects: 100% (3/3), done. From 192.168.216.160:/srv/gitrepo/project ae35b4f..b5e963e master -> origin/master Updating ae35b4f..b5e963e Fast-forward 1.txt | 1 + 1 file changed, 1 insertion(+)
可以查看到,已成功更改,查看我们的提交日志,可以看到,两次提交记录:
dell@D170309 MINGW64 /d/project (master) $ git log commit b5e963e1b7c061e7df94a32f6a1dccf068555d04 (HEAD -> master, origin/master) Author: cuikai <961900940@qq.com> Date: Fri Sep 14 12:18:56 2018 +0800 second commit ae35b4fbdfe5df3b0883df8cfe1e488ead43cefa Author: cuikai <961900940@qq.com> Date: Fri Sep 14 12:17:24 2018 +0800 first dell@D170309 MINGW64 /d/project (master) $
参考:
本文为崔凯原创文章,转载无需和我联系,但请注明来自冷暖自知一抹茶ckhttp://www.cksite.cn