立即学习:https://edu.csdn.net/course/play/9305/195170?utm_source=blogtoedu
-----1.什么是分支
软件项目中启动一套单独的开发线的方法
2.为什么使用git
1.可以很好的避免版本兼容开发的问题,避免不同版本之间的相互影响。
2.封闭一个开发阶段
3.解决bug的时候新建分支,用于对该bug的研究
3.git中跟分支相关的命令
git branch 分支名
git branch 不加任何参数,列出所有的分支,分支前面的*号,代表该分支为当前所在分支
* 创建分支的时候,分支名不要使用特殊符号
git branch -d 分支名
* 不能删除当前所在的分支
git branch -m 旧分支名 新分支名
git checkout 分支名 切换分支
*如果在分支上面对文件进行修改之后,没有commit后就切换到另外一个分支B,这个时候会报错,因为没有commit的文件在切换分支之后会被覆盖,所以git分报错提示
git checkout -f 分支名 强制切换到分支,如果当前没有提交变更,会直接丢弃。
* -f 参数一定定要非常非常小心使用,一般情况下不建议使用,除非真的要强制去执行。
----- 追根溯源--git log
log命令的使用
用于查看git的提交历史
git log命令显示的信息的具体含义
commit: d9sa8f7asf8s9f08a9s786asgasf98s8df9a0sf8sa --
Author: wiggin([email protected]> -- 作者跟邮箱概要信息
Date: wed may 时间
v2 -- commit的时候,使用 -m选项说写一段概要说明
日常 在使用commit的时候, -m 选项所写的内容不定不能随便写
git log -数字 表示查看最近几次的提交
git log -p -数字 显示最近2次提交的不同点
git log --author 查看具体某个作者的提交
git log -- oneline 输出简要的信息
git log --graph 以一个简单的线串联起整个提交历史
git log 输出信息的定制
----- 文件对比利器 -- git diff
diff --> difference的缩与,用于比较差异
使用场景:
1.解决冲突
2.制作补丁
git diff 不加任何参数用于比较当前工作区跟暂存区的差异
git diff --cached 或者 -- staged
git diff HEAD
git diff 分支名 查看当前分支跟指定的分支的差异
git diff 分支名1 分支名2 查看两个指定分支的差异
git diff 文件名 查看指定文件的差异
git diff commitid1 commitie2 用于列出两个历史提交的差异
git diff 分支名 --stat 列出哪出文件有差异变更
----- git更改提交
1。将不必要的文件add
2. 上次提交觉得是错的
3. 不想改变暂存区内容,只是想调整提交的信息
4. 版本回滚
git reset HEAD 文件名 移除不必要的添加到暂存区的文件
git reset HEAD^ 或者 commitid 去掉上一次的提交
git reset --soft HEAD^ 修改上次提交的信息,即commit -m "修改这里的内容"
git reset --soft 只是将HEAD引用指向指定的提交,工作区跟暂存区的内容不会改变
git reset --mixed (默认选项)将HEAD指向指定的提交,暂存区的内容随之改变,工作区内容不变
git reset --hard 将HEAD指向指定的提交,暂存区跟工作区都会改变
----- 落叶归根 --分支合并及冲突解决
分支的合并
git merge 分支名
表示: 拿指定的分支名与当前分支进行合并
git diff --name-only --diff-filter-U 用于查看产生冲突的文件
----- git的标签
git tag 不加任何参数,表示显示标签(以字母序),非按时间
git tag 标签名 默认是给最近的一次提交打上标签
git tag 标签名 commitid
git show 标签名 显示该标签相关的那次提交的相关信息
git tag -d 标签名 删除该标签
git push 远程分支名 标签名 把某个标签(必须是本地已存在原,否失败)推送到远程服务器上
删除远程标签的步骤
1.删除本地的标签 git tag -d 标签名
2.删除远程的标签 git push orgin :refs/tags/标签名
------ gitignore文件
为什么要使用.gitignore文件
大量与项目无关的文件全推到远程仓库上,同步的时候会非常慢,且跟编辑器相关的一些配置推上去之后,别人更新也会受其影响。所以,我们使用相关文件,对不必要的文件进行忽略,使其不被git追踪
一把情况下, .gitignore文件,在项目一开始创建的时候就创建,并推送到远程服务器上,这样子初次同步项目的时候,就是用到该文件,避免以后,团队成员把与项目无关的文件,传到远程服务器上。
*.log 表示忽略项目中所有以.log结尾的
123?.log 表示忽略项目中所有的以123加任意字符的文件
/error.log 表示忽略项目中根目录中的error.log 这个文件
src/main/test/* 表示忽略/src/main/test/目录下的所有文件
*.class
**/java 匹配所有的java目录下的所有文件
!/error.log 表示在之前的匹配规则下,被命中的文件,可以使用!对前面的规则进行忽略
已推送怎么办?
对于已经提交到远程或本地仓库的文件。.gitignore配置之后不会生效。我们必须先删除本地暂存区里的文件,之后在加上。gitgnore文件,最后再把变更提交到远程仓库上。
git rm --cached 文件名 从暂存区删除某个文件
git rm -rf --cache 文件夹, 表示递归删除暂存区该文件夹的所有东西
----- gitlab简介
1. gitlab是什么
是一个用于仓库管理系统的开源项目,使用git作为代码管理工具,并在此基础上搭建起来的Web服务。
基础功能免费,高级功能收费
2. 为什么使用Gitlab
1.基础功能开源,可自行搭建。
2.可心进行权限控制,使得代码对部分人可见。
----- gitlab的安装
1.linux必要配置
在防火墙里开放http跟ssh端口
yum install lokkit
yum install curl openssh-server openssh-clients postfix cronie -y
service postfix start
chkconfig postfix on
lokkit -s http -s ssh
添加gitlab仓库并安装
curl -sS http://packages.gitlab.cc/install/gitlab-ce/script.rpm.sh | sudo bash
sudo yum install gitlab-ce
启动gitlab
gitlab-ctl reconfigure
vim /ect/gitlab/gitlab.rb
修改external_url
gitlab-ctl reconfigure
gitlab-ctl restart
配置防火墙
vim /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8888 -j ACCEPT
----- gitlab邮箱服务
配置邮箱服务的用途
1.有合并请求时,邮件通知
2.账号注册时,邮件验证
3.修改密码时,通过邮件修改
配置步骤
1.开启QQ邮箱的smtp服务(不建议163邮箱,发几次之后就不能发送)
设置--》帐户--》smtp-->密保验证--》验证成功返回一串字符串,形妆如(asdfsadfasfdsdfasdfaf)
保存返回的字符串
2.修改gitlab配置
vim /etc/gitlab/gitlab.rb
gitlab-ctl reconfigure
3.测试邮件服务是否正常
gitlab-rails console
Notify.text_email('接收方邮件地址','邮件标题','邮件内容').deliver_now
----- gitlab组配置
1.开启注册邮箱验证
admin area -->setting--> Sign-up restrictions-->勾选Send confirmation email on sign-up
2.当前用户
root 123 wiggin
3. 创建组
首页-->create a group(http://192.168.56.101:8888/dashboard/groups)
访问级别
private:只有组成员才能看到
Internal: 只要登录的用户就能看到
Public: 所有人都能看到
Guest:可以创建issue 发表评论 不能读写版本库
Reporter: 可以克隆代码,不能提交
Developer: 可以克隆代码、开发、提交、push
Master: 可以创建项目、添加tag 、保护分支、添加项目成员、编辑项目
Owner:可以设置项目访问权限 -Visibility Level 删除项目 迁移项目 管理组成员
ssh -- https访问
1.键入命令:ssh-keygen -t rsa
2.提醒你输入key的名称,输入如id_rsa
3.在C:\Users\Adminsitrator\.ssh下产生两个文件:id_rsa和id_rsa.pub
4.用词本打开id_rsa.put文件,复制内容,在gitlab.com的网站上到ssh密钥管理页面,添加新公钥、随便取个名字,内容粘贴刚才复制的内容。
----- gitlab分支及标签保护
为什么要保护分支
保护特定的分支不用随便合并,以免影响其他分支