GitBlit与Git使用说明
一、简述
由于项目在内网开发且团队规模适中,gitlab与github都要monkey,所以排除!
Gitblit是使用java语言开发的一个git管理工具,其后台使用的是servlet配置作为网页服务器,引用一句话:Gitblit 是一个纯 Java 库用来管理、查看和处理 Git 资料库.相当于 Git 的 Java 管理工具.git的管家; 免费、开源、小巧、搭建简单
二、Linux 安装与运行
2.1 下载安装包
ps:百度下载,官网下载很慢,当前演示版本为: gitblit-1.8.0.tar.gz 提取码:riyb
2.2 创建目录
//在linux 根目录创建一个为 opt 的新目录
[root@bearcub /]# mkdir -p /opt/gitblit
2.3 解压
[root@bearcub gitblit]# tar -zxvf gitblit-1.6.2.tar.gz
2.4 配置
//配置访问端口号
[root@bearcub gitblit-1.8.0]# vim service-centos.sh
//编辑 gitblit.sh文件
[root@bearcub gitblit-1.8.0]# vim gitblit.sh
//将内容替换为,不替换关闭窗口gitblit关闭,不会在后台运行
nohup java -jar gitblit.jar --baseFolder data &
ps:配置后可能无效,错误信息 端口一直显示被占用
需要进入 cd /data ls ---> vim defaults.properties---->修改端口号
2.5 运行gitblit
//_前台启动
[root@bearcub gitblit-1.8.0]# ./gitblit.sh
//_后台启动
systemctl start gitblit
//查看运行状态
systemctl status gitblit
//systemctl 命令可能不能使用
//检查进程的命令 ps -ef|grep gitblit
//杀死进程 kill -9 进程号
2.6 访问
在浏览器输入http://ip:端口号 默认管理员账号 admin 密码 admin
2.7 删除gitblit仓库
---页面上可视化删除
---停止gitblit 找到指定的仓库名.git 删除
---重启gitblit
三、gitblit 常用操作
前言: 以下操作均在 admin账户,仓库设置的权限优先级最高,会覆盖其它权限设置
3.1 创建/管理用户
用户的创建、权限分配、密码修改
3.2 创建/管理团队
创建/删除-团队
团队的创建、权限分配、删除
3.3 创建/管理仓库
①创建仓库
②仓库权限-用户
仓库权限之 添加/删除 指定用户访问
ps:就近原则 您可以设置私有用户权限。 此设置会覆盖团队权限以及regex权限。
③仓库权限-团队
仓库权限之 添加/删除 指定团队(所有团队成员)访问
ps:就近原则 您可以设置私有团队权限。 此设置会覆盖regex权限。
四、git环境搭建
4.1 下载并安装git
下载
演示版本是 Git-2.9.3.2-64-bit.exe
安装
一路next,直到install,安装后测试是否安装成功 cmd--->git
4.2 初始化git仓库
前言:以下管理员操作即可,完毕后,团队成员克隆 (或者管理员克隆后将项目加入版本控制后提交到 git 仓库,通知其它 成员克隆)
_安装完成后,在项目所在文件夹鼠标右键有一个 “Git Bash Here”, 打开git 自带的命令行工具,
第一次使用git bash 一定要先配置一下用户信息,避免后面报错,也就是指定下用户用户名,邮箱
(后期也可以修改)
git config --global user.name "用户名"
git config --global user.email "邮箱"
git config --list 查看设置后的信息
_通过命令 git init 把这个目录变成git可以管理的本地仓库
git init
_把文件添加到版本库中,使用命令 git add . 将新增加的和修改的文件添加到暂存区里面去, 不要忘记后面的小数点“.”,意为添加文件夹下的所有文件;
git add .
_用命令 git commit告诉Git,把文件提交到仓库。引号内为提交说明
复制代码
git commit -m 'first commit'
_关联到远程库
git remote add origin 你的远程库地址
_推送至远程仓库
//这条指令的意思是把远程库中的更新合并到本地库中,
//-–rebase的作用是取消掉本地库中刚刚的commit,并把他们接到更新后的版本库之中。
git pull --rebase origin master
_把本地库的内容推送到远程,使用 git push命令,实际上是把当前分支master推送到远程。执行此命令后会要求输入用户名、密码,验证通过后即开始上传。
//第一次使用 -u origin 指定了你要 push 到哪个 remote。
git push -u origin master
4.3 仓库克隆
管理员将仓库搭建完毕后,将仓库地址给团队成员,团队成员克隆到本地即可
git clone 仓库地址
五、集成IDE
5.1 配置git
选择 git 安装目录---->点击Test测试连接---->ok 集成成功
5.2 克隆git仓库
复制git仓库地址--->克隆--->选择存放本地仓库的位置--->点击clone即可
5.3更新与提交
六、冲突演示解决
6.1 冲突
预防针: 先更新后提交,能解决大部分冲突问题!
由于不好操作时间略长,不好录制,图片代替;
出现冲突的场景: 小红和小白在本地修改了A文件,同时提交(几率小)或未更新后分别提交,此时会出现代码冲突
aaacccccccccc
aaabbbb
<<<<<<< 31730d46914809dd86a4d41509f48a5cbd8ae449
小白
=======
小红
>>>>>>> 小红未更新提交a.txt
/**************************代码冲突-解释****************************************/
//远端仓库拉取下来的内容 : 小白
<<<<<<< 31730d46914809dd86a4d41509f48a5cbd8ae449
小白
=======
//本地仓库暂存区中的内容: 小红
=======
小红
>>>>>>> 小红未更新提交a.txt
//按需合并后提交
aaacccccccccc
aaabbbb
小白
6.2 提交异常及解决
_git push 时,错误提示:当前未在分支上,不能 pull 和 push !
_git branch : 查看分支
_创建/切换/合并分支
//创建分支
git branch temp bdcfe3d8
//切换分支
git checkout master
// 合并分支
git merge temp
git branch -d temp : 删除分支
加入版本控制,提交至本地,再push
七、分支创建与版本回滚
7.1 分支的相关操作
git branch 查看当前所有的分支
git branch –r 查看远程所有分支
git branch –a 查看本地远程分支
git tag 查看版本打的Tag
git checkout [name] 切换到name分支
git branch –d [name] 删除name分支
git push origin --delete [name] 删除远程分支
git checkout –b [name] 创建name分支 并切换到name分支上
分支创建–合并–步骤
①从已有的分支创建新的分支(如从master分支),创建一个temp分支
git checkout –b temp
②建立本地到远端仓库的链接
git push --set-upstream origin temp //temp为创建分支的名字
③远程仓库已经创建了dev分支 下面也有代码上传了,可以使用如下命令
git push origin 分支名 --force
④分支合并(必须先先切换到主分支才能合并)
git merge temp
创建远程分支
分支合并
7.2 IDEA 分支操作
IDEA分支创建-切换-合并
7.3 版本回退
场景模拟: 分别模拟提交三个版本并对其进行回退操作~
__分别提交三个版本
__git log 查看提交日志
__回退到上一个版本(回退到n个版本可使用 git reset --hard HEAD~N )
git reset --hard HEAD~N
__回退到第三个版本(使用 git reflog 查看版本号再 git reset --hard HEAD 版本号)
git reflog 查看版本号
git reset --hard HEAD 版本号
7.4 IDEA 版本回退
方式一
方式二
八、Git的其他相关操作
8.1 重置远程链接
git remote set-url origin https://xxx@github.org/hello/etl.git
8.2 查看远程仓库地址
git remote -v
8.3 fatal: remote origin already exists
fatal: remote origin already exists —当前电脑已存在本地仓库,上传的仓库与本地仓库不一样,发生了冲突,解决删除之前的git仓库
8.3.1 先删除远程 Git 仓库
git remote rm origin
8.3.2 再添加远程 Git 仓库
git remote add origin 远程仓库地址
8.3.1 push
git push -u origin master
8.3.3 如果报403错误,执行以下代码
//git清除用户名密码 不建议使用
git config --system --unset credential.helper
8.3.4 强制覆盖分支
git push -u origin master -f
8.4 生成ssh秘钥
ssh-keygen -t rsa -C “邮箱”
8.5 Can’t Update: no tracked branch
//新建的分支--关联远程分支
git branch --set-upstream master origin/master
8.6 error: failed to push some refs to 'xxx(远程库)'
原因:本地与远程仓库不一致(可能创建远程仓库是勾选了readme.md,本地仓库没有)
1.git pull --rebase origin master
2.git push -u origin master
8.7 Git 本地分支与远程分支关联(git branch --set-upstream-to=origin/<branch> lcn )
/**git 本地新建一个分支后,必须要做远程分支关联。如果没有关联, git 会在下面的操作中提示你显示的添加关联。
【关联目的】是如果在本地分支下操作: git pull , git push ,不需要指定在命令行指定远程的分支. 推送到远程分支后,
你只要没有显示指定,git pull 的时候,就会提示你上述问题。**/
// origin/分支名称 远程仓库别名/分支名
解决: git branch --set-upstream-to=origin/分支名称
8.8 No remote repository specified
fatal: No remote repository specified. Please, specify either a URL or a
remote name from which new revisions should be fetched.
//可能没有url和pushurl的配置,需要添加
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = false
[remote "origin"]
url = http://admin@47.xxx.139.243:8090/r/test.git
pushurl = http://admin@47.xxx.139.243:8090/r/test.git
8.9 git常用命令
//创建分支并推送到远端
git checkout -b 分支名称
git push origin 分支名称 将创建的本地分支推送至远程
git branch --set-upstream-to=origin/分支名称
//其他命令
git branch 查看当前所有的分支
git branch –r 查看远程所有分支
git branch –a 查看本地远程分支
git tag 查看版本打的Tag
git checkout [name] 切换到name分支
git branch –d [name] 删除name分支
git push origin --delete [name] 删除远程分支
git checkout –b [name] 创建name分支 并切换到name分支上
//初始化操作
git init 把当前的目录变成可以管理的git仓库,生成隐藏.git文件。
git add XX 把xx文件添加到暂存区去。
git add –A (git add --all的缩写)
git add . 监控工作区的状态树,使用它会把工作时的所有变化提交到暂存区
git remote add origin 仓库地址 (关联一个远程库)
git push –u(第一次要用-u 以后不需要) origin master (把当前master分支推送到远程库)
git clone 仓库地址 (从远程库中克隆)
git status 查看仓库状态
git diff XX 查看XX文件修改了那些内容
git reflog 查看历史记录的版本号id
git merge dev 在当前的分支上合并dev分支
git remote 查看远程库的信息
git remote –v 查看远程库的详细信息
git stash 把当前的工作隐藏起来 等以后恢复现场后继续工作
git stash list 查看所有被隐藏的文件列表
git push origin master Git会把master分支推送到远程库对应的远程分支上
git reset –hard HEAD^ 或者 git reset –hard HEAD~ 回退到上一个版本
(如果想回退到100个版本,使用git reset –hard HEAD~100 )