Git详解,开发纵享丝滑
- 什么是Git?
-
- Git的定义
- 与SVN有何区别?
- 为什么要用Git?
- Git与GitHub
- 安装和配置
-
- Git安装、部署和运行
- GIT指令模式
- Git项目存入版本库
- Git管理文件
-
- Git分支管理
-
- Git日志
- Git提交点
-
- Git远程仓库
-
- 注册GitHub账户
- 生成和配置RAS秘钥
- 本地与远程仓库通讯(使用https的方式,第一次提交时需要输入密码)
- Git Flow必备技能,规范团队Git操作
-
- master分支
- develop分支
- feature分支
- release分支
- hotfix分支
- GIT在idea中模式(eclipse下也是雷同)
- GITLab
-
- 环境检查
- 下载GitLab安装包
-
- 常见问题
-
- 页面报错502错误
- Gitlab之邮箱配置
- Gitlab之root密码找回
- 搭建 Gitblit
-
什么是Git?
Git的定义
Git来源于Linux。Linux的内核全球有很多开发者贡献代码(原因是BItKeeper最开始是免费的,后面要收费了)(用一个不开源的框架版本管理一个开源的框架,大牛感觉到了侮辱)
所以Git天生就是分布式的。
什么是开源?–不单单是免费, 是开放,基于类库和包是开源的,你使用我的类库和包,也必须是开源的。
与SVN有何区别?
- Git是分布式的,SVN不是:
这是GIT和其它非分布式的版本控制系统,例如SVN,CVS等,最核心的区别。好处是跟其他同事不会有太多的冲突,自己写的代码放在自己电脑上,一段时间后再提交、合并,也可以不用联网在本地提交;
- GIT与SVN版本机制不一样:
Git 只关心文件数据的整体是否发生变化,而SVN这类版本控制系统则只关心文件内容的具体差异。这类系统(如SVN)每次记录有哪些文件作了更新,以及都更新了哪些行的什么内容,然而Git 并不保存这些前后变化的差异数据。实际上,Git更像是把变化的文件作快照后,记录在一个微型的文件系统中。每次提交更新时,它会纵览一遍所有文件的指纹信息并对文件作一快照,然后保存一个指向这次快照的索引。为提高性能,若文件没有变化,Git 不会再次保存,而只对上次保存的快照作一链接。
- GIT不需要联网:
SVN 断开网络或者断开VPN就无法commit代码,但是Git 可以先commit到本地仓库。用SVN的话,没有网络或者断开VPN时,你当然也可以继续在本地开发,但是无法commit代码,因为SVN 每次commit都必须联网,长时间不commit代码会丢失大量开发进程的历史纪录。有个比喻是:不能commit就像用word写文档不能save一样危险。而且有网络的情况下每一次commit都会花上数秒甚至更长时间。但用 Git 的话,就算你在飞机或者火车上,都可以非常愉快地频繁提交更新,因为是在本地仓库commit所以几乎不需要时间,而且commit一定要频繁,不然无法记录你的改动,如果你一天commit一次,中间的修改你就找不回来,然后等到了有网络的时候再将版本纪录和代码一起上传到远程仓库。
- Git 的内容完整性要优于SVN:
因为Git 在commit(存储在本地)或者push(上传到远程仓库)之前,通过对文件的内容或目录的结构计算出一个 SHA-1哈希值,作为指纹字符串进行内容的校验,并将此结果作为数据的唯一标识和索引,在远处仓库接受到commit的文件之后,会再计算一遍哈希值然后跟传递过来的哈希值做比较,如果不一致,说明文件在传输时变得不完整,或者磁盘损坏导致文件数据损坏。另外在 Git 数据库中的东西都是用此哈希值来作索引,而不是靠文件名;
中心化:银行(中心)、
去中心化:比特币、分布式账本(捐钱:红十字会) 银行都在做这一块。
Commit 完整性 40位 SH1的加密(不可逆)
为什么要用Git?
- git每台电脑都有一个版本库,可以在本地做版本管理;
- 速度快。git的速度远超大部分版本管理系统,包括svn
- 强大的分支管理功能
- 活跃的开源社区,如最著名的github
Git与GitHub
gitHub是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名gitHub。
gitHub除了git代码仓库托管及基本的 Web管理界面以外,还提供了订阅、讨论组、文本渲染、在线文件编辑器、协作图谱(报表)、代码片段分享(Gist)等功能。摘自百度:作为开源代码库以及版本控制系统,Github拥有超过900万开发者用户。随着越来越多的应用程序转移到了云上,Github已经成为了管理软件开发以及发现已有代码的首选方法。
安装和配置
除了官方版本,也有其他软件公司将Git包装成GUI操作界面类型的程序(官方版本主要是使用指令模式进行操作)。虽然GUI的图形化操作界面看起来比较吸引人,但是建议还是先从Git的指令模式开始学习,这样才能够清晰的了解Git的工作细节。玩转了指令模式,界面工具自然能够水到渠成。
Git安装、部署和运行
- 下载 Windows版 git(windows环境默认安装即可)。
- 下载地址:https://git-scm.com/downloads
- 图形化工具SourceTree:https://www.sourcetreeapp.com/
- https://www.sourcetreeapp.com/
GIT指令模式
安装完git后,在任一一个文件夹(我自己的一个简单项目:D:\work\enjoy-git),右键进入git bash
![Git详解,开发纵享丝滑_第1张图片](http://img.e-com-net.com/image/info8/70622f3410cc4df59c275436f29aef2e.jpg)
Git项目存入版本库
git init 让git开始管理这个文件夹,在同级目录下会出现一个隐藏的.git文件。
![在这里插入图片描述](http://img.e-com-net.com/image/info8/5b195bd2bfb543f39e7d7a269c37c6aa.jpg)
![在这里插入图片描述](http://img.e-com-net.com/image/info8/6987d7eb14584b5188a61b961372dba3.jpg)
![Git详解,开发纵享丝滑_第2张图片](http://img.e-com-net.com/image/info8/c5e94fff71c94fb08296fd118b62fbb4.jpg)
Git管理文件
![Git详解,开发纵享丝滑_第3张图片](http://img.e-com-net.com/image/info8/08d8ee0a01c943b28371c4cd95a0fe11.jpg)
记得提交前设置下操作者的姓名和email ,不然会报错提交不了
![Git详解,开发纵享丝滑_第4张图片](http://img.e-com-net.com/image/info8/e55b1072e3ad4bf4b6ca20d818ea5131.jpg)
git config user.name ‘用户名’、![在这里插入图片描述](http://img.e-com-net.com/image/info8/a4dde3d4d667424694d50b7256363437.jpg)
git config user.email '[email protected]’
![在这里插入图片描述](http://img.e-com-net.com/image/info8/d74d08859202471ea25882ab08a5be63.jpg)
提交版本
git status 检查版本状态
![Git详解,开发纵享丝滑_第5张图片](http://img.e-com-net.com/image/info8/f68ce1e94288464481a9345a0c825cbf.jpg)
提交本地(可以两个步骤,也可以一个步骤)
两个步骤:
- git add . 或 git add -a或git add filename (.代表所有新增、修改 -a 新增、修改、删除)
加入缓存区(.或者-a表示全部,也可单独文件)
- git commit -m ‘new project’ 提交版本 ‘版本提交描述’
一个步骤(两个步骤合一)
- git commit -am ‘new project’ 加入缓存区并提交
![Git详解,开发纵享丝滑_第6张图片](http://img.e-com-net.com/image/info8/5238bf0d7eef4fcd88446d3ae88965cc.jpg)
如果其中一个文件GitController.java内容进行了修改,我们再次提交
git status —先检查下状态(显示变动信息)
![Git详解,开发纵享丝滑_第7张图片](http://img.e-com-net.com/image/info8/13ddcc66343546b8a218da94f53aa7b8.jpg)
git commit -am ’update 1’
![在这里插入图片描述](http://img.e-com-net.com/image/info8/1add7e572ef947b1b569daa6f9af29e4.jpg)
补充说明:
- 如果只执行git init后没有执行git commit的话,可以使用一个命令把索引信息删除
git rm --cached 文件名
- 如果你修改了文件名,使用git commit -am 的话,可以也有对应的文件修改记录。
虽然git mv 原来的文件名 新文件名 可以做到 ,但是提交中一样可以做到,所以mv基本上使用得比较少
忽略和排除
忽略那些不需要管理的文件夹或文件(比如此项目中.idea文件就需要忽略掉)
Touch .gitignore 创建一个.gitignore文件
![在这里插入图片描述](http://img.e-com-net.com/image/info8/7aa9a0578e864509988d39fe07c723b8.jpg)
输入一下内容,因为.gitignore本身就需要忽略,所以此文件需要忽略
![Git详解,开发纵享丝滑_第8张图片](http://img.e-com-net.com/image/info8/4b57693c7c6540c5a6b5b408b2ff62b8.jpg)
我们再次检查发现为什么 .idea文件为什么没被忽略了
![Git详解,开发纵享丝滑_第9张图片](http://img.e-com-net.com/image/info8/22708e50c6cd47b28dbd1d1b5cd09836.jpg)
原因是.gitignore只能忽略那些原来没有被追踪的文件,如果某些文件已经被纳入了版
本管理中,则修改.gitignore是无效的。那么解决方法就是先把本地缓存删除(改变成
未被追踪状态),然后再提交:
- git rm -r --cached .
- git add .
- git commit -m ‘update .gitignore’
![Git详解,开发纵享丝滑_第10张图片](http://img.e-com-net.com/image/info8/33e75c2bf5ca4645b3208d27f4ce4982.jpg)
补充说明:
- “.gitignore”文件的影响范围是它所在的文件夹和所有的子文件夹
- 每一个文件夹沟可以创建自己的“.gitignore”文件,如果它上层的文件夹也有“.gitignore”文件,这个文件夹也会受到它的影响。
- “.gitignore”文件中可以使用“#”字符开头表示注释,文件夹路径是用“/”字符,文件名可以使用通配符“*”,另外还可以使用“!”字符表示排除。
![在这里插入图片描述](http://img.e-com-net.com/image/info8/e0cc18321f92437eb9d5f8aea04c60e9.jpg)
Git分支管理
创建分支
- git branch king 创建一个 名字为king的分支
![在这里插入图片描述](http://img.e-com-net.com/image/info8/9e59e1f0729f4b33b4ecfc6ec50c029f.png)
- git branch 不加任何参数,查看分支情况(master代表主版本)
![在这里插入图片描述](http://img.e-com-net.com/image/info8/d79150fd483a4d5f8c74b375712d9f03.png)
切换分支
- git checkout king 切换分支(king)
![在这里插入图片描述](http://img.e-com-net.com/image/info8/98ee7bf2c3b94c608bd32a386bc05674.jpg)
切换提交
在分支king上修改
![Git详解,开发纵享丝滑_第11张图片](http://img.e-com-net.com/image/info8/6853a8968e524bb899012500a0e1295d.jpg)
在分支king上提交 git commit -am ‘branch 1’
![在这里插入图片描述](http://img.e-com-net.com/image/info8/4ac1db3b527b475d8cc3de6d1b464aab.jpg)
分支的冲突和解决
切回主干版本修改内容
![在这里插入图片描述](http://img.e-com-net.com/image/info8/cb3ab1b0e6c74bd98c504778699fc88d.png)
![Git详解,开发纵享丝滑_第12张图片](http://img.e-com-net.com/image/info8/db4a99c115fc4c5495a1f67a5f413580.jpg)
提交主干版本
![在这里插入图片描述](http://img.e-com-net.com/image/info8/8ac3d8c93487420baf49b9e1ab421f30.jpg)
查看冲突
- git merge king master版本与king分支
![在这里插入图片描述](http://img.e-com-net.com/image/info8/5265517063034ee5b4ac716ce27571b1.jpg)
![Git详解,开发纵享丝滑_第13张图片](http://img.e-com-net.com/image/info8/0e92c4046ecc42bd92415b11838a9889.jpg)
java类中冲突显示出来。
![Git详解,开发纵享丝滑_第14张图片](http://img.e-com-net.com/image/info8/bd9964e3591946f9afa82f38a3162508.jpg)
解决冲突(手工修改内容再次提交)—注意如果出现了冲突,就必须先解决冲突才能切换分支
![Git详解,开发纵享丝滑_第15张图片](http://img.e-com-net.com/image/info8/3d43b99fc0c549ce8b9cff7dde8e3896.jpg)
![在这里插入图片描述](http://img.e-com-net.com/image/info8/ad391ebbe0f24d51bc47b3e6afd88eee.jpg)
Git日志
- git log
![Git详解,开发纵享丝滑_第16张图片](http://img.e-com-net.com/image/info8/56676b673c5747318c8ce818ad9508e4.jpg)
- 简化成一行 git log --oneline
![Git详解,开发纵享丝滑_第17张图片](http://img.e-com-net.com/image/info8/111e0e14b1dd4cbca2b6818a63f779eb.jpg)
- 简化成一行,同时显示分支 git log --oneline --graph
![Git详解,开发纵享丝滑_第18张图片](http://img.e-com-net.com/image/info8/ace5f5d3a10b4f99b87e449df77f19cc.jpg)
Git提交点
- 在命令行使用gitk可以展示简单的git界面。
- commit的中的这些字母和数字就是commit节点的标识(比如最新的提交点是 ccf4298)
![Git详解,开发纵享丝滑_第19张图片](http://img.e-com-net.com/image/info8/98ee01861637401c817c0a8c4bb909b6.jpg)
这个界面太low了,我来给大家画一张图总结一下之前的提交信息
![Git详解,开发纵享丝滑_第20张图片](http://img.e-com-net.com/image/info8/3ccb3f9db93e4347bb74f302824a10a2.jpg)
标签
- git tag -a v0.1 8848773 给第一个提交点打上标签
![Git详解,开发纵享丝滑_第21张图片](http://img.e-com-net.com/image/info8/3b95dc52900e4f839ec0a2f9c4e2a5a8.jpg)
重要的修改点都打上tag
![Git详解,开发纵享丝滑_第22张图片](http://img.e-com-net.com/image/info8/557f585fc0f54ab69ac5baaf335f52ba.jpg)
![Git详解,开发纵享丝滑_第23张图片](http://img.e-com-net.com/image/info8/d606230a827b4166bb7bb6dab4f03208.jpg)
- 恢复
在利用github实现多人合作程序开发的过程中,我们有时会出现错误提交的情况,此时我们希望能撤销提交操作,让程序回到提交前的样子,本文总结了两种解决方法:回退(reset)、反做(revert)
比如我已经修改了控制类的名字,并且已经提交(f90f8e4)这个提交点。
![Git详解,开发纵享丝滑_第24张图片](http://img.e-com-net.com/image/info8/1a9657b9a80344d6bcace43f39dd83c7.png)
在Git里,有一个HEAD指针指向当前分支(只有一个分支的情况下会指向master,而master是指向最新提交)
git reset的作用是修改HEAD的位置,即将HEAD指向的位置改变为之前存在的某个版本。(比如需要回到到V0.3)
使用“git reset --hard 目标版本号”命令将版本回退
![在这里插入图片描述](http://img.e-com-net.com/image/info8/a8c4112981a3426d8276d485f705f3d4.png)
查看一下日志:
- git log --oneline --graph
![Git详解,开发纵享丝滑_第25张图片](http://img.e-com-net.com/image/info8/c0605b88395d498daeb44a242eddb85d.png)
git revert的作用通过反做创建一个新的版本,这个版本的内容与我们要回退到的目标版本一样,但是HEAD指针是指向这个新生成的版本,而不是目标版本。
比如我已经修改了控制类的名字,并且已经提交(f90f8e4)这个提交点。
![Git详解,开发纵享丝滑_第26张图片](http://img.e-com-net.com/image/info8/dbd48052b5f24cf1bd9c7316c29d4ba1.png)
使用“git revert HEAD”撤销前一次的commit
![Git详解,开发纵享丝滑_第27张图片](http://img.e-com-net.com/image/info8/4f34e0d712524acf9c056b89b3e97f45.png)
看log信息,revert已经把新建了一个提交点9a26e6b,这个点的内容和ccf4298提交点的内容是一样。区别就是新建了一个commit点
Git远程仓库
注册GitHub账户
远程仓库使用大家都非常熟悉的GitHub,首先大家必须在github上注册一个账户,建议大家使用QQ邮箱即可完成注册(具体过程自行完成即可)。
https://github.com/
![Git详解,开发纵享丝滑_第28张图片](http://img.e-com-net.com/image/info8/f6d6801f34cb40e2841eccde1bc1aaa4.jpg)
新建一个和本地一样的工程,“enjoy-git”
![Git详解,开发纵享丝滑_第29张图片](http://img.e-com-net.com/image/info8/aa8b7c995c1d45a5b5f8d451f49ff480.jpg)
回到仓库,查询出enjoy-git仓库远程地址
![Git详解,开发纵享丝滑_第30张图片](http://img.e-com-net.com/image/info8/9b6965167c504d56925f55a7e153fe18.jpg)
![Git详解,开发纵享丝滑_第31张图片](http://img.e-com-net.com/image/info8/1f20139af7dc48e8a23717d524b76293.jpg)
生成和配置RAS秘钥
注意在本地连通github首先必须通过RAS加密方式通讯,所以本地需要生成一个RSA的秘钥。命令如下:
ssh-keygen -t rsa -C [email protected]
输入后一直回车即可完成。
![Git详解,开发纵享丝滑_第32张图片](http://img.e-com-net.com/image/info8/968099bfa15e4ce294181bb4678f0a80.jpg)
![Git详解,开发纵享丝滑_第33张图片](http://img.e-com-net.com/image/info8/b86583b90c90488cab44af89bab56468.jpg)
根据上图的公钥地址寻找到对应的公钥:
![Git详解,开发纵享丝滑_第34张图片](http://img.e-com-net.com/image/info8/7ce94a837fb24dde822a447f62700f1e.jpg)
同时配置github上对应的公钥
![Git详解,开发纵享丝滑_第35张图片](http://img.e-com-net.com/image/info8/9d800936bb844f72aaf8a716c11da525.jpg)
选择SSH keys,需要new一个SSH key
![Git详解,开发纵享丝滑_第36张图片](http://img.e-com-net.com/image/info8/3595977a5f6b4a68a306f9a5413ff678.jpg)
把刚才本地生成公钥粘贴至key中且保存(保存后会提示输入密码,github的登录密码)
![Git详解,开发纵享丝滑_第37张图片](http://img.e-com-net.com/image/info8/cbe14b8e979b49d5a531a650c3bb200e.jpg)
![Git详解,开发纵享丝滑_第38张图片](http://img.e-com-net.com/image/info8/b2f33c0289104eaa8c3eaa68ceb2e5fd.jpg)
![Git详解,开发纵享丝滑_第39张图片](http://img.e-com-net.com/image/info8/380ebe79cb314746b3c3519cd3e2ec93.jpg)
本地与远程仓库通讯(使用https的方式,第一次提交时需要输入密码)
经过上面的注册GitHub账户过程中新建的一个enjoy-git库中知道了远程通讯的github地址为 https://github.com/kingjames223/enjoy-git.git
- 本地新建一个远程连接 enjoy
git remote add enjoy https://github.com/kingjames223/enjoy-git.git
![在这里插入图片描述](http://img.e-com-net.com/image/info8/1269273ca05f4cae934da3ccc8f1c60f.jpg)
- 查看远程连接 git remote
![在这里插入图片描述](http://img.e-com-net.com/image/info8/a41612fcac6b4588be8ae2983302b972.jpg)
- 查看远程连接详情 git remote -v
![在这里插入图片描述](http://img.e-com-net.com/image/info8/401d48259aab4c35bab407f58d66f57c.png)
上传本地项目至GitHub (主版本)
git push --set-upstream enjoy master 可简化git push -u enjoy master
命令后需要输入github用户名和密码
![Git详解,开发纵享丝滑_第40张图片](http://img.e-com-net.com/image/info8/66b9d40028cd4edba2c8201cb8a057f0.jpg)
上传成功后的本地命令窗口
![Git详解,开发纵享丝滑_第41张图片](http://img.e-com-net.com/image/info8/9794ee35ffd24f08b97e7039a90c270e.jpg)
再次刷新下github上的项目(内容已经成功上传)
![Git详解,开发纵享丝滑_第42张图片](http://img.e-com-net.com/image/info8/58669a0f0bf44d058bec10947ee59728.jpg)
修改远程仓库的内容,同时同步至本地
![Git详解,开发纵享丝滑_第43张图片](http://img.e-com-net.com/image/info8/428c9965180347959b7493ba1a71d5d7.jpg)
![Git详解,开发纵享丝滑_第44张图片](http://img.e-com-net.com/image/info8/92f88a8adb6343eeb841775b5ac3ad77.jpg)
![Git详解,开发纵享丝滑_第45张图片](http://img.e-com-net.com/image/info8/1ee43987c80a4119b63da47efe72a076.jpg)
git fetch 提取远程仓库(如果服务器有修改,不会到本地)
![Git详解,开发纵享丝滑_第46张图片](http://img.e-com-net.com/image/info8/3ef58af9f4fb4d03ae20d9d65818cb74.png)
git merge 合并冲突(如果只是本地或远程一端修改的话,就不会冲突)
![在这里插入图片描述](http://img.e-com-net.com/image/info8/3689770d9daf4e7bad5213e63ecd9f39.png)
![Git详解,开发纵享丝滑_第47张图片](http://img.e-com-net.com/image/info8/c7107f4bdda344e59a8e1a6544135955.jpg)
克隆,比如在f盘,我进行了一个
- git clone github地址 —在命令目录下会自动生成一个对应项目的目录
- git clone github地址 文件夹 – 会在文件夹中clone对应的内容
git clone https://github.com/kingjames223/enjoy-git.git
![Git详解,开发纵享丝滑_第48张图片](http://img.e-com-net.com/image/info8/04b73fe9b4df4b3990630f3052560207.jpg)
git clone https://github.com/kingjames223/enjoy-git.git new
![Git详解,开发纵享丝滑_第49张图片](http://img.e-com-net.com/image/info8/9fa6f1c1e5b0405a9c272081281a0427.jpg)
克隆以后的项目push
git config --global push.default matching
Git Flow必备技能,规范团队Git操作
代码管理需要一个清晰的流程和规范
master分支
- 主分支
- 保持稳定
- 不允许直接往这个分支提交代码,只允许往这个分支发起merge request
- 只允许release分支和hotfix分支进行合流 , 所有在Master分支上的Commit应该Tag
develop分支
- 开发分支
- 相对稳定的分支
- 用于日常开发,包括代码优化、功能性开发
feature分支
- 特性分支
- 从develop分支拉取,用于下个迭代版本的功能特性开发
- 功能开发完毕合并到develop分支, 合并完分支后一般会删点这个Feature分支,但是我们也可以保留。
release分支
- 发布分支
- 从develop分支拉取
- 用于回归测试,bug修复
- 发布完成后打tag并合入master和develop, (记住:一旦打了Release分支之后不要从Develop分支上合并新的改动到Release分支)
hotfix分支
- 热更新分支
- 从develop分支拉取
- 用于紧急修复上线版本的问题
- 修复后打tag并合入master和develop
GIT在idea中模式(eclipse下也是雷同)
![Git详解,开发纵享丝滑_第50张图片](http://img.e-com-net.com/image/info8/15076ffbabf54fa0b650f6444609cca3.jpg)
被管理后,就可进行版本提交,比如我修改了一个类,要进行提交
![Git详解,开发纵享丝滑_第51张图片](http://img.e-com-net.com/image/info8/912caaedbb2743f18e4e35253839375c.jpg)
![Git详解,开发纵享丝滑_第52张图片](http://img.e-com-net.com/image/info8/10b57459609149b2837e79f19c02c6c5.jpg)
提交完后,也可以快速查看版本修改的日志信息
![Git详解,开发纵享丝滑_第53张图片](http://img.e-com-net.com/image/info8/6775341340994887960874a584bb30e3.jpg)
![在这里插入图片描述](http://img.e-com-net.com/image/info8/9a83eac6dca94c2fb66abdf6bb447f7d.jpg)
GITLab
https://about.gitlab.com/install/#centos-7
官方安装手册
环境检查
- 检查和打开HTTP和SSH访问
- 安装postfix以发送通知电子邮件。如果要使用其他解决方案发送电子邮件,请跳过此步骤,并在安装Gitlab后配置外部SMTP服务器Gitlab之邮箱配置
![Git详解,开发纵享丝滑_第54张图片](http://img.e-com-net.com/image/info8/7a18aacda7c6478b9ffd0b5024112c59.jpg)
下载GitLab安装包
- 使用curl命令添加Gitlab包
![Git详解,开发纵享丝滑_第55张图片](http://img.e-com-net.com/image/info8/1558694ba04b448781ab288cbd4c7655.jpg)
- 安装(建议修改服务器IP, 否则如果域名设置错了,怎么修改)
![在这里插入图片描述](http://img.e-com-net.com/image/info8/101af84a03144445829db1827c7d74b9.jpg)
![Git详解,开发纵享丝滑_第56张图片](http://img.e-com-net.com/image/info8/b9897a9084ff45aaa46dcf31b785c16f.jpg)
几个常用命令
- sudo gitlab-ctl start 启动
- sudo gitlab-ctl stop 停止
- sudo gitlab-ctl status 查看状态
- sudo gitlab-ctl restart 重启
- sudo gitlab-ctl reconfigure 修改后直接编译启动
- sudo gitlab 默认的日志文件存放在/var/log/gitlab 目录下:
- sudo gitlab-ctl tail #查看所有日志
- sudo gitlab-ctl tail nginx/gitlab_access.log #查看nginx访问日志
- cat /opt/gitlab/embedded/service/gitlab-rails/VERSION 查看gitlab版本
常见问题
如果域名设置错了,怎么修改
- vi /etc/gitlab/gitlab.rb
![在这里插入图片描述](http://img.e-com-net.com/image/info8/5b7c187f322b4f68b6bd62bd68dce11a.jpg)
重新生成配置:
gitlab-ctl reconfigure (会生成新的gitlab.yml)
gitlab-ctl restart
页面报错502错误
![Git详解,开发纵享丝滑_第57张图片](http://img.e-com-net.com/image/info8/7751a5bf7ae84035b3200fbbd7827b01.jpg)
内存太小,没关系,不要修改东西,等一会去访问
Gitlab之邮箱配置
vi /etc/gitlab/gitlab.rb
![Git详解,开发纵享丝滑_第58张图片](http://img.e-com-net.com/image/info8/5fe70772b33e497aa5d3c65808da371b.jpg)
![在这里插入图片描述](http://img.e-com-net.com/image/info8/2a623e47b2cc41398fbdaae846d0d26f.jpg)
- gitlab-ctl reconfigure (会生成新的gitlab.yml)
- gitlab-ctl restart
测试一下:
- gitlab-rails console
#进入控制台,然后发送邮件
- Notify.test_email(‘[email protected]’, ‘邮件标题’, ‘邮件正文’).deliver_now
![在这里插入图片描述](http://img.e-com-net.com/image/info8/0ba572b5636e49deb6e3f53898e8ee3b.jpg)
![在这里插入图片描述](http://img.e-com-net.com/image/info8/4c982439d4144b2b83209f65d0a75b44.jpg)
Gitlab之root密码找回
- 输入gitlab-rails console production进入gitlab控制台
![在这里插入图片描述](http://img.e-com-net.com/image/info8/5d8e445f79d64237ba1ad730b477645e.jpg)
user = User.where(id:1).first 查询id为1的用户对象,因为超级管理员用户默认都是1
![在这里插入图片描述](http://img.e-com-net.com/image/info8/363cd943732d40d4af923704eceb4f91.jpg)
- user.password=‘密码’,密码位置填写您新的密码即可,然后再输入user.save!保存用户对象
![在这里插入图片描述](http://img.e-com-net.com/image/info8/bdd082ff1fc14759965ea87e54909bcb.jpg)
搭建 Gitblit
- Gitblit 是一个纯 Java 库用来管理、查看和处理 Git 资料库,相当于 Git 的 Java 管理工具。
- Gitblit 支持Linux操作系统,因此 Gitblit 需要java运行环境(JRE)。
- 如果公司要搭建自己的 Git 服务器,可以使用 Gitblit 这个开源的 Git 服务器。
开始搭建
- 第一步:下载JDK
- 第二步:安装JDK步骤不再详述,网上教程一搜一大把,可参考:http://www.cnblogs.com/android-joker/p/4513125.html
- 第三步:确保电脑安装了Java 运行时环境 JRE 或者 JDK ( version >=1.7 )。
在命令窗口中,输入java命令:java -version,回车,如果出现版本信息,说明安装成功。
![Git详解,开发纵享丝滑_第59张图片](http://img.e-com-net.com/image/info8/91e8049c9ae04222ad89b624dfaca191.png)
- 第四步:下载安装Gitblit
- 下载Gitblit 下载地址
![Git详解,开发纵享丝滑_第60张图片](http://img.e-com-net.com/image/info8/d79a1f936224430a8aea6e20eda59523.jpg)
- 解压缩下载的压缩包即可,无需安装
![Git详解,开发纵享丝滑_第61张图片](http://img.e-com-net.com/image/info8/c3624080f4a3497c9f2a425e6336f5a0.jpg)
- 第五步:配置Gitblit
- 创建用于存储资料的文件夹。
![Git详解,开发纵享丝滑_第62张图片](http://img.e-com-net.com/image/info8/f6b04cb30a354a93ba18694ea279264f.jpg)
- 找到Git目录下的data文件下的 gitblit.properties 文件,用“记事本”或文本编辑器打开。
![Git详解,开发纵享丝滑_第63张图片](http://img.e-com-net.com/image/info8/0e8e4d3a6ad6493abaa35b1ca7076efc.jpg)
- 找到 git.repositoriesFolder(资料库路径),赋值为 第1)步 创建好的文件目录。
![Git详解,开发纵享丝滑_第64张图片](http://img.e-com-net.com/image/info8/3ba4f63963694257ad1ce18009d83b64.jpg)
- 找到 server.httpPort,设定http协议的端口号(注意:所使用的端口不要与已有端口冲突)。
![Git详解,开发纵享丝滑_第65张图片](http://img.e-com-net.com/image/info8/7f326073270545d9b971e0d0bfe598c4.jpg)
- 找到 server.httpBindInterface,设定服务器的IP地址。这里就设定你的服务器IP。
![Git详解,开发纵享丝滑_第66张图片](http://img.e-com-net.com/image/info8/3627ad4fd5ae4331ae4d45a83d88ba28.jpg)
- 保存,关闭文件
- 第六步:运行gitblit.cmd 批处理文件
- 找到 gitblit 目录中的 gitblit.cmd 文件,双击运行。
![Git详解,开发纵享丝滑_第67张图片](http://img.e-com-net.com/image/info8/cbffa86f52654f059661a9d3641fc118.jpg)
运行成功,结果如下:
![Git详解,开发纵享丝滑_第68张图片](http://img.e-com-net.com/image/info8/c1d1ec9897404d4aba3576a0c9b32965.jpg)
- 在浏览器中打开,现在就可以使用GitBlit了
![Git详解,开发纵享丝滑_第69张图片](http://img.e-com-net.com/image/info8/cb198919573648d1b9b6e154553b7a6d.jpg)
- 第七步:设置成服务方式(Windows Service)启动Gitblit
- 在Gitblit目录下,找到 installService.cmd 文件
![Git详解,开发纵享丝滑_第70张图片](http://img.e-com-net.com/image/info8/f28d6e12faae4283abbccbdae5d5dfaa.jpg)
- 用“记事本”或文本编辑器打开
修改 ARCH
32位系统:SET ARCH=x86
64位系统:SET ARCH=amd64
添加 CD 为程序目录 SET
CD=E:\Git\gitblit-1.8.0 (你的实际目录)
修改StartParams里的启动参数
给空就可以了
![Git详解,开发纵享丝滑_第71张图片](http://img.e-com-net.com/image/info8/53d5fe88a976415caabce6bceeb98ba3.jpg)
- 保存,关闭文件。
- 关闭正在运行的cmd命令窗口,以管理员身份运行Gitblit目录下的installService.cmd文件。
- 在服务器运行窗口中键入“services.msc”回车,打开 Windows 服务窗口
![Git详解,开发纵享丝滑_第72张图片](http://img.e-com-net.com/image/info8/d6fbc3156424447aa1397942ae20a9b1.jpg)
在服务中,就能看到已经存在的gitblit服务了
![Git详解,开发纵享丝滑_第73张图片](http://img.e-com-net.com/image/info8/0febe6d6e2e74c4f853369d08e297bee.jpg)
启动该服务。平时使用时,保持这个服务是启动状态就可以了。
以上就是Windows平台下,配置 Gitblit服务器的全部的全部内容。
希望对开发者们能够有所帮助