git进阶-远程仓库-IDEA中GIt使用

 远程仓库

如果需要进行多人协作我们就必须使用远程仓库将本地仓库的数据同步到远程仓库实现多人协作开发

目前比较热门的代码托管社区:GitHub,网址:https://gtihub.com  ,提供了免费的远程git仓库功能不过网速不是特别流畅

在国内有很多的公司使用oschina提供的git服务码云https://gitee.com ,

当然,我们也可以自己来搭建远程仓库。

搭建远程仓库服务

GitHub是世界最大的代码托管库但是如果你想要设置私人仓库是要收费的而且速度不太好因此一般公司都会自己搭建Git私服

现在主流的私服架构有GitLabGogs等。

开源中国的码云就是使用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,又可以为FTPPop、甚至为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项目中需要提交的只有srcpom.xml,其它文件和目录都应该忽略:

选择递归忽略

同样的方式处理target目录、.classpath文件和.project文件,此处略。

然后在本地仓库目录多出了一个.gitignore文件,这里面就定义了所有的过略规则:

.gitignore文件的语法

空行或是以#开头的行即注释行将被忽略。

可以在前面添加正斜杠/来避免递归,下面的例子中可以很明白的看出来与下一条的区别。

可以在后面添加正斜杠/来忽略文件夹,例如build/即忽略build文件夹。

可以使用!来否定忽略,即比如在前面用了*.apk,然后使用!a.apk,则这个a.apk不会被忽略。

l *用来匹配零个或多个字符,如*.[oa]忽略所有以".o"".a"结尾,*~忽略所有以~结尾的文件(这种文件通常被许多编辑器标记为临时文件);[]用来匹配括号内的任一字符,如[abc],也可以在括号内加连接符,如[0-9]匹配09的数;?用来匹配单个字符。

将项目中所有文件添加到暂存区

方式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

 

posted @ 2019-07-13 20:30  MonstersU  阅读(1828)  评论(0编辑  收藏  举报