git进阶-远程仓库-IDEA中GIt使用
远程仓库
如果需要进行多人协作,我们就必须使用远程仓库。将本地仓库的数据同步到远程仓库,实现多人协作开发。
目前比较热门的代码托管社区:GitHub,网址:https://gtihub.com ,提供了免费的远程git仓库功能。不过网速不是特别流畅。
在国内,有很多的公司使用oschina提供的git服务:码云, https://gitee.com ,
当然,我们也可以自己来搭建远程仓库。
搭建远程仓库服务
GitHub是世界最大的代码托管库,但是如果你想要设置私人仓库,是要收费的。而且速度不太好。因此一般公司都会自己搭建Git私服。
现在主流的私服架构有:GitLab、Gogs等。
开源中国的码云就是使用GitLab搭建的。
https://try.gogs.io/是用Gogs搭建,可以做测试使用。
安装git和gogs
场景:
这里我用的Linux系统是centos 首先安装编译需要的文件 然后用root用户登录 yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel asciidoc
yum install gcc perl-ExtUtils-MakeMaker
yum install xmlto 下载编译git-2.2.2.0.tar.gz wget -o git-2.2.2.0.tar.gz https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.22.0.tar.gz tar xf git-2.2.2.0.tar.gz cd git-2.2.2.0 make configure ./configure --prefix=/usr/local/git --with-iconv=/usr/local/libiconv make all doc make install install-doc install-html echo"export PATH=$PATH:/usr/local/git/bin" >> /etc/profile 使命令生效 source /etc/profile 创建git用户 useradd git passwd git 切换用户 su git cd ~ wget -o https://github.com/gogs/gogs/releases/download/v0.11.86/linux_amd64.tar.gz tar -zxvf linux_amd64.tar.gz cd gogs
运行 ./gogs web
注:如果不好使
1.删掉gogs,重新解压编译一遍即可.
2.重启linux.
启动成功,监听的是3000端口
访问管理界面
在浏览器中访问:http://服务器ip地址3000
首次运行,会让我们进行一些设置
数据库设置:
基本设置:
其它设置,可选,不设置的话需要注册新的用户信息
完成后
注册登录
地址:https://try.gogs.io/user/login
创建新的仓库
ssh和https两张协议, 当我们选择一种后,会出现对应的远程仓库地址
这里推荐使用ssh协议。因为http速度较慢,并且每次都需要验证用户名和密码,
但是要使用ssh协议进行同步,必须生成SSH密钥,并添加到当前仓库的许可列表中
ssh协议
ssh是英文Secure Shell的简写形式。通过使用SSH,你可以把所有传输的数据进行加密,这样"中间人"这种攻击方式就不可能实现了,而且也能够防止DNS欺骗和IP欺骗。
使用ssh,还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替Telnet,又可以为FTP、Pop、甚至为PPP提供一个安全的"通道"。
创建ssh密钥
Git-bash中已经集成了ssh功能,所以我们只需要简单的命令,即可生成密钥:
ssh-keygen -t rsa
一路回车向下走,不要输入任何内容即可!
执行命令完成后,在window本地用户.ssh目录C:\Users\用户名\.ssh下面生成如下名称的公钥和私钥
添加git密钥到git私服
选择用户,个人设置,选择ssh密钥
设置密钥
密钥的内容,就是刚刚生成的两个密钥中的公钥:id_rsa.pub
用文本编辑工具打开,并且复制内容即可
推送远程仓库
通过控制面板,回到仓库页面,发现下面有一段帮助信息
使用TortoiseGit(小乌龟)推送
在git工作区中右键-->选择TortoisGit(T)-->设置
远端设置 注意:UPL和推送URL都是要https的地址 ,配置私钥
然后配置网络
然后右键-->推送
推送成功,我这里出现了乱码问题,只需要在编辑工具里把格式改为UTF-8即可.
拉取远程仓库
先手动修改远程仓库数据,模拟他人的提交
然后在工作区-->右键选择TortoisGit(T)-->拉取
发现内容多了一行"测试拉取远程仓库"
总结
1) 如果要使用SSH协议与远程仓库同步,就必须先在本地生成公钥和私钥,然后将公钥添加到远程的SSH列表
2) 如果已经有本地仓库,并且想要与远程仓库关联,一般需要两步:
a) 通过git remote add origin + 远程仓库地址 进行关联
b) 通过git push -u origin master推送本地仓库修改到远程仓库
3) 如果没有本地仓库,先创建远程仓库,然后通过git clone + 远程仓库地址 进行克隆并创建本地仓库
将Java工程加入到版本库
场景
准备一个maven项目,一个用户管理系统
我们把这个项目交给git去管理。
初始化本地仓库
将不需要管理的文件和目录 忽略
maven项目中需要提交的只有src和pom.xml,其它文件和目录都应该忽略:
选择递归忽略
同样的方式处理target目录、.classpath文件和.project文件,此处略。
然后在本地仓库目录,多出了一个.gitignore文件,这里面就定义了所有的过略规则:
.gitignore文件的语法:
l 空行或是以#开头的行即注释行将被忽略。
l 可以在前面添加正斜杠/来避免递归,下面的例子中可以很明白的看出来与下一条的区别。
l 可以在后面添加正斜杠/来忽略文件夹,例如build/即忽略build文件夹。
l 可以使用!来否定忽略,即比如在前面用了*.apk,然后使用!a.apk,则这个a.apk不会被忽略。
l *用来匹配零个或多个字符,如*.[oa]忽略所有以".o"或".a"结尾,*~忽略所有以~结尾的文件(这种文件通常被许多编辑器标记为临时文件);[]用来匹配括号内的任一字符,如[abc],也可以在括号内加连接符,如[0-9]匹配0至9的数;?用来匹配单个字符。
将项目中所有文件添加到暂存区
方式1:使用git bash 敲击命令: git add . 就会把当前目录所有文件加入暂存区
方式2:使用tortoise
你会发现,待添加的文件,只有src目录下的和pom.xml,当然还有那个.gitignore文件
提交
然后提交即可,推送到远程
IDEA使用Git
在idea创建一个git仓库
成功后有的地方会变棕色
然后我们去把一些文件忽略掉
小乌龟忽略
idea忽略
增加和提交
相当于我们这个项目已经被git托管了
推送
填写推送http地址
如果推送被拒绝
1.切换到自己项目所在的目录,右键选择GIT BASH Here,Idea中可使用Alt+F12
2.在terminl窗口中依次输入命令:
git pull
git pull origin master
git pull origin master --allow-unrelated-histories
3.在idea中重新push自己的项目
在远程仓库中变更内容
拉取
拉取成功
再次提交
提交成功
idea解决远程冲突
模拟场景
远程仓库端做修改
本地也做修改
这时候就有了差异我们把它拉取一下,产生了冲突
根据需要解决冲突
我们在演示一下服务端做修改,本机提交
服务端修改
本机
推送到远程服务器
依旧根据需要解决冲突
然后就ok了
分支冲突
创建查看分支
查看日志
分支合并
提交后切回master分支
修改master分支并提交
合并
然后出现冲突根据需求进行解决就完成了
最后再次push