svn
STS或eclipse
svn配置参考:
https://www.jianshu.com/writer#/notebooks/50338366/notes/92531864/preview
IDEA
----IDEA中没有svn插件,所以我们下载TortoiseSVN-1.8.7.25475-x64-svn-1.8.9.msi(网盘中有),安装,安装时注意,一定要带上如下图所示的东西。
- 配置svn
apply - 导入远程版本库到本地
例:远程中有zshop版本(汤小洋在线商城项目,是一个spring项目,六个模块,一个父模块)
首先:在本地建一个zshop空文件夹,清除内容
然后:Get from VS,---checkout---刚建和zshop目录
也可以关闭项目,再从头开始
IDEA将项目和SVN解除关联
- 打开Intellij中工具栏File的setting(ctrl+alt+s),选择plugins,在右边[搜索框]输入“SVN”,搜索。选择“SVN disconnect”。
- 安装此插件,重启intellij idea
- 点击菜单栏中的VCS
---在下拉菜单中选择SVN disconnect,完成SVN版本管理移除。
访问github.com要不要挂梯子
我们都知道国内访问github)会非常慢,甚至打不开,具体原因这里就不聊了~我们这里聊怎么不用梯子,GitHub也能访问并提速!
1.修改本地hosts文件
Github打开慢的原因其中一个原因:GitHub的CDN域名遭到DNS污染,无法连接使用GitHub的加速分发服务器,所以国内访问速度较慢。
获取github最新IP
访问地址:
Fastly - github.global.ssl.Fastly.net
-这网址访问不了,只有复制它的了。
会得到CDN和IP地址,对应github.global.ssl.fastly.net
不要:查询当前github对应的ip地址。 百度搜索ip查询工具,或直接访问https://tool.lu/ip/。输入github官网网址即可查询到ip。 2 寻找hosts映射文件 需要注意的是很多小伙伴直接打开host文件进行修改是无法成功的。我们需要使用管理员身份修改。可以直接在搜索框搜索记事本,右键以管理员身份运行。 用记事本打开以下路径,并选择所有文件即可找到hosts文件,打开即可。 3 修改GitHub映射IP 在最后一行换行输入刚才查询到的ip地址并空格输入GitHub官网网址。修改完记得ctrl+s保存。现在再在浏览器里进GitHub,你就会发现无比顺畅,下次如果再进不去重复操作哦。c:/Windows/System32/drivers/etc/hosts
20.205.243.166 github.com
-------------------------------------------------------------------------------------------------------------------------
140.82.112.4 github.com
151.101.65.194 github.global.ssl.fastly.net
2.方案二:替换本地hosts文件
方案一折腾有点麻烦,来一个简单粗暴的,直接替换hosts文件即可。
打开网址:https://raw.hellogithub.com/hosts
直接下载配置好的github加速hosts文件,下载完成之后直接替换本地的hosts文件。
3.方案三:Github镜像
目前还活着:也是我在github.com上发布版本库的最常用方式。
先在github.com注册一个账号(xiongshaowen,cexoit1983),当打不开github.com时,就从下面的网址进入,它们账号相通。
https://kgithub.com/
https://www.gitclone.com/
发布时,常用ssh地址,https还用不了。
4.方案四:逆向思路-Gitee导入Github
步骤1:注册gitee账号
步骤2:新建导入仓库
以Spring 为例子:GitHub - spring-projects/spring-framework: Spring Framework
5.方案五:安装浏览器Github 插件
GitHub加速插件顾名思义它就是一款加速GitHub下载速度的插件,它可以提高Github访问速度:github release、archive以及项目文件下载的加速。
下载:地址
GitHub加速1.5.10_chrome扩展插件最新版下载极简插件
https://chrome.zzzmh.cn/info/ffjjnphohkfckeplcjflmgneebafggej "GitHub加速_1.5.10_chrome扩展插件最新版下载_极简插件"
Git
- 简介
Git作为目前最流行的版本控制工具,已经是团队开发必须掌握的技能之一,而github也是目前最大的开源平台。因此,学习git和github是每一位程序员的必经之路。
-----GitHub他就是一个远程仓库,远程仓库通俗的理解就是一个可以保存自己代码的地方,在实际开发当中一个项目往往是有多个人来共同协作开发完成的,那么就需要一个统一代码保存的地方,而GitHub就是起到一个共享和汇总代码的作用。
Git不同于svn,svn必须要只有一个中央仓库,需要连网,而GIT每个人都一个本地版本库,需要交互时,每个人都可以推送。
GIt版本控制库之前有一个暂存区,我们可以先把不同版本的东西放到暂存区,等确认要提交某一版本时,再提交到本地仓库中。很好解决了多版本到仓库中的混乱局面
版本库与其它版本库的交互有三大步:add,commit,pull push
注意:本地版本库可以有很个,有一个主库叫master,其它都是分支
- 安装配置GIT
一,http://msysgit.github.io
下载GIT
----进入该网站后,会自动转重定向到https://gitforwindows.org/
,这个网站,很慢,所以我到https://git-scm.com/download/win
下载了2.4.0版本了。
二,安装
其它都下一步即可,除了以下图片所示要注意。
然后:配置环境变量。
三,配置GIT本地账号对应远程仓库账号
在任意地方,本人在桌面上,右键----git bash,注意:user.name是githum.com上注册的账号,我是‘xiongshaowen’,下图是不对应的,注意,注意,注意。
大多时候,还是对某个项目(--local)创建对应的账号,这里的global是对整个计算机创建的
创建用户(xsw,65179334@qq.com)成功否,可以到如下图所示的地方查看文件
四,搭建git服务器(远程仓库):统一托管网站(https://github.com)
首先:进入官网,注册一个账号(xiongshaowen,cexoit1983),再登陆。
然后:配免密钥登远程仓库
1.先在本地配置,再发送一个备份到远程
比如我有两台电脑,其中git仓库用的是其中一台电脑产生的ssh公钥()但不同设备产生的公钥是不能互用的,所以如果要克隆git上的代码到另一台设备上,就需要让另一台设备产生的公钥也添加到git上
在上面右键打开的 git bash命令窗口中输入,后一直回车,如看见下图样子,说明本地配ssh key成功。
ssh-keygen -t rsa -C 65179334@qq.com #qq邮箱是注册官网账号是用到的
2.发送本地配的sshkey到远程
进入github.com网站并登录---setting----Ssh and GPG keys---Add new key,title任意取,key中输入,上面在本地生成( (/c/Users/Administrator/.ssh/id_rsa):)的ssh的id_rsa.pub内容。
3.测试连通性
ssh -T git@github.com
如果通连成功,则在C:\Users\Administrator.ssh中会多生成一个known_hosts文件。
4.上面的步子没问题的话,我们可以做项目了(本地到远程互通项目)。
一,在任意地方建一个目录,存放了我们要上传的项目,例‘mygit‘项目。
二,进入项目根目录,建一个文件(仅没有任何文件时测试用,没有任何功能)hello.txt
三,右键--git bash ----输入:git init回车,会生成git项目文件了,’.git',把该目录(mygit)纳入版本库管理体系。
四,远程官网建一个项目。
CREATE a new REPOSITORY--建一个公开仓库,假设:http地址为
https://github.com/xiongshaowen/mygitremote.git
,ssh地址:git@github.com:xiongshaowen/mygitremote.git
五,本地项目ssh远程项目关联
----回到本地项目 'mygit项目‘,右键---git bash,输入:
git remote add origin http或ssh都可以 #此处本人用ssh,https在githubmc.om上老出错,现暂不知原因
//据说要私人令牌(token),本人也申请了,还出错,又说要cmd 中ipconfig/flushdns,我也做了,还没用
//现在发现了要梯子,设置代理,不设置代理时断时续的,当然了https协议是要token的,在那发布的最后会弹出一个对话框,
//怎么设置代理参考其它文章
master是主分支
六,发布项目到远程仓库和第一次下载项目
发布项目到远程仓库(github.com官方或国内gitee.com)
-----本地仓库中已经有了最终版本的项目了,现在我要发布到远程和别人的交互。
- 第一次发布项目(和以后常常发布不一样)
git add . //文件-暂存区,点表示当前目录
git commit -m "注释内容" //暂存区-本地分支(默认master)
git pull --rebase origin master //将远程仓库同步到本地,gitee官网上出现的问题解决方式
git push -u origin master
这样官网github上的mygitremote项目中有了本地项目的文件。
-
第一次下载项目
git clone git@github.com:xiongshaowen/mygitremote.git
- 后期维护的发布与更新
提交
git add .
git commit -m "提交内容分支"
git pull --rebase origin master # 将远程仓库同步到本地
git push origin master //这时比第一次提交少一个u参数
更新(远程-本地),要进入刚刚克隆过来的项目的根目录下,不是这个工作空间的目录
git pull
Eclipse 中操作git:Egit
目前的eclipse基本都支持git.如果不支持,到eclipse marketplace搜git安装。
如果在help----about sts中找到如下前头所示的图标,说明该eclipse已安装了git。
1. 配置
A.用户配置,相当于git bash的git config --global user.name xxx,不过一般是由git工具生成,则STS自动识别导入的。
注意:如果没有安装git工具(此时只有ECLIPSE内置的),具产生.gitconfig文件,则直接可以如下图所示的点‘ADD ENTRY'选项卡,增加远程仓库的用户名和注册的邮箱
B.本地版本库工作空间,我一般不用git init初始化它为git库。我是再放需要版本库化的工程根目录为版本库,当然了,工程多了库也很多。
C.这里也是先由git 工具生成密钥,再STS导入。如果是在c:/User/Administrator/.ssh中,则会自动导入。目前,gitee.com官网上不用复制密钥操作,即可上传发布项目。
D.Eclipse是好老的版本的话,会出Auth fail: Invalid password or missing SSH key错误 .用git命令生成的公钥太高级了,若用STS3.9(我现在常用的),这个太老了,所有要用它生成的公钥,再复制上远端的SSHKEY中。IDEA中暂没有发现这问题。
发布项目版本与下载项目
- 第一次发布
一。建一个文件夹或是一个项目的根目录下,进入里面,用 git bash----git init把它设为本地版本仓库
或STS开发工具--右键项目---Team---share project---Git----create
这样把filter设为了本地版本库,这样可以分两次发布两个项目到同一个远程库中,不然的话,会出错或覆盖。
再与远程仓库建立关联,再发布项目版本到远程版本库中,如下面的二,三,四……。
二,Team ----Add to index,放到暂存区
三,Team ---commit 提交
四,Team----remote push,发布到远程版本仓库中。
首先:远程仓库中有一个版本库,把这个库的地址复制一下。(本人的是gitee.com国内的远程库),放到如下图所示的地方。
然后都要选master分支库。
最后: finish,完成发布。
- 后续维护提交,比如修改了一个文件加了一些内容。
add to index
commit and push #注:第一次发布时我们选了 commit
remote push
- 第一次下载项目
首先:要确保工作空间很干净,没有对应版本库的文件夹中的内容
---版本库中的文件夹级别与我们要导入的工程根目录下的文件夹同级别,即导入的整个仓库中的内容到一个文件夹下。所以我们一般一个工程项对应一个版本库。所以我本人会把整个版本库内容导到工作空间时,不首先建文件夹,让导入时自动创建之,即库名为项目名。
例:远程仓库,有一个filter仓库,库中有两个文件夹,它们对应两个项目,这是因为上传发布时弄的,现在我只想导入一个项目‘1’到工作空间中'mygitpro'。该工作空间中没有filter文件夹,导入时自动建之。
确何filter下没有内容,不然会报错
eclipse导入没有.project、.classpath文件的git项目后续处理,因为导入远程项目时,别人提交的.classpath,.project不适用于你自已的位置,所以上传时这两个文件会忽略不上传
首先:从别的项目copy这两个文件(如要对应maven,springboot性质),最好是本地相同项目下的两个文件。
然后:其中.classpath是依赖jar路径,.project需要改下import->projects from git->existing local repository
再后:,更改项目名字,如下图,打开.project文件
本人做了一个STS(eclipse)工作空间'mygiteetest',没有设置git配置,但设置了远程登录gitee.com的用户名账号,压缩放在网盘上了,在别处用时,只要从盘上下载放在一地方,一般是桌面上,再用STS或eclipse切换它作为工作空间。再克隆gitee.com版本到此文件夹中即可,克隆过来的文件夹名即自动为本地版本库,可以做各种git操作
再可以从本地版本库中导项目了
-
后续更新项目,如别人提交新的版本了。我们要更新之。
TEAM-----pull(不带问号的)
更新远程Git代码到本地
选中项目右击:选择team-->fetch from Upstream
如果有版本改动的话,项目是有箭头的,如果没有什么版本改动的话,项目是没有箭头。
-- 如果箭头向下表明你落后了远程仓库几个版本
通过项目右击:选择team-->Synchronize WorkSpace 可以查看当前工作空间内容的差异情况。
处理方式:选中项目右击:选择team-->pull,表示从远程仓库"同步"代码,pull完成后 箭头向下 图标消失了。
-- 如果箭头向上则表明你比远程仓库的版本提前了几个版本,就是说你有提交到本地仓库,但是没有push到远程仓库
处理方式:选中项目右击:选择team-->Push Branch...,表示是向远端仓库提交代码。
版本冲突处理
预先制作一个冲突-测试用
我们分别在远程仓库和本地工作空间的项目上,改同一行代码。远程上是可以修改成功的,但我们本地修改后,会通过工具看到冲突现场。
-
右键项目---team----Synchronize Workspace
- 右键如上图所示的冲突文件 CountFilter.java----add to index加入到暂存区。
-
再次右键CountFilter.java---commit 提交到本地分支(master),会弹出如下图所示的对话框,点提交。
- 更新服务端到本地端,即更新项目,即见面才可解决冲突。
----此时右击项目没那个pull选项,我们要点中冲突的文件内容区域,不是左边的文件名,---右键----TEAM----Repository---pull - 处理冲突,这里我只是修改(),修改只能修改本地的文件。ctrl+s保存即可。
还有一个处理方法:右键---merge tool,后弹出如下图所示页面,可修改之,一般用这个方法。
-
再保存到暂存区,最后提交与发布。
team---add to index
git基础
- git bash 相当于linux命令窗口,可以应到liunx的各种命令操作。如下:
$pwd #查看当前目录
$ll #显示当前目录下所有文件与文件夹情况
- git命令基础
-----当一个文件夹纳入到版本库管理后
$git init #把所在的目录纳入版本库(管理),即相当于设定仓库,默认为master主分支,主分支稳定性不强,但效率高
------可通过git 选项,操作查看版本库信息
一,git status
on branch master表示主分支中,No commits yet没有提交过,untracked files已经识别了,用git add可以纳入暂存区等提交了
$touch hello.txt #为了后观测试,我建一个hello.txt文件
$ git status
On branch master
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
.classpath
.project
.settings/
hello.txt
pom.xml
src/
target/
nothing added to commit but untracked files present (use "git add" to track)
二,git add hello.txt,把文件从工作区移到版本库的暂存区。注意: . 表示当前目录所有文件
$git add hello.txt
Administrator@taishi MINGW64 ~/Desktop/mygitpro/hibernatedemo (master)
-----------------------------------------------------------------------------------------------------------------------------
$ git status
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: hello.txt
Untracked files:
(use "git add <file>..." to include in what will be committed)
.classpath
.project
.settings/
pom.xml
src/
target/
三,git rm --cached hello.txt 从暂存区回滚到工作区
另一个命令:git reset head xxxx.xxx
git rm --cached hello.txt
四,git log -num 查看提交情况,加了'-num'查看最近的num次提交情况
$git log -2
$git log pretty=oneline
五,账号 git config .....
git config --global (基本不用,给整个计算机一次性设置账号)
git config --system (常用,给当前用户一次性设置)
git config --local (给当前项目一次性设置)
例:给当前目录设置邮箱,用户名
$git config --local user.name '熊少文'
$git config --local user.email 'xxxx@qq.com'
会在当前目录下的.git目录下的config文件中查看
$cd .git
$cat config
-----------------------------------------------------------------------------------------------
[core]
repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = true
symlinks = false
ignorecase = true
[user]
name = 熊少文
email = 65179334@qq.com
删除账号
一种方式:命令设置,如删除local账号
$git config --local --unset user.name
$git config --local --unset user.email
另一种 方式简单粗暴,直接从文件中删除
六,如果某个文件,已提交,并具对其进行了修改,可以放弃修改(还原到已提交状态)
$vim hello.txt #修改文件hello.txt
$git checkout -- hello.txt #注意: ‘--’前后有空格
IDEA git
-----最近学习了一下VCS(Version Control System),这里我选择的是Git而不是SVN,因为Git在本地磁盘上就保留着所有当前项目的历史更新,所以处理起来速度飞快,这是使用空间换时间的处理方式。使用Git,即使在没有网络或VPN的情况下,你同样可以非常愉快的频繁提交更新到本地仓库,等到有了网络的时候再提交到远程的仓库
-
IDEA配置git
虽然集成了git,但是并没有自带git.exe,所以需要自己下载。安装与上面介绍的一样。
git.exe 分32和64位,可以在git官网下载:https://git-scm.com/download/win
-
设置远程仓库的账号(github.com或gitee.com)
----这个暂时没有设置github.com,好难搞,没搞好,不过现在能搞定ssh上传,https老是有问题。
IDEA 创建的本地项目push到Gitee上
首先:在gitee或github上创建一个仓库,再生成本地密钥(ssh连接用),再复制粘贴到官网上(gitee.com不用搞可上传),参考简书'javaweb---版本控制'文章。这里我只大概的把生成密钥的命令写在这
git config --global user.name "xiongshaowen/13065156391" #github.com/gitee.com
git config --global user.email "65179334@qq.com" #github.com/gitee.com都用了这个邮箱
ssh-keygen -t rsa -C "65179334@qq.com" #ssh连接用,https连接需要纳入成员或自身账号密码即可
ssh -T git@gitee.com/git@github.com #测试连通性
登陆 gitee.com
然后点击右上角账号左边的加号,点击 新建仓库。
Git上仓库就相当于项目的意思
这里输入仓库名称zshop_parent
创建成功,得到git地址
https://gitee.com/cexoityygy/zshop_parent.git
然后:本地创建一个项目,或导入(打开)一个项目
接着在本地创建一个项目zshop_parent,并且创建内容
再后:创建本地版本仓库,把zshop_parent当仓库
再然后:把项目加入到本地仓库的stage区暂存
右键项目->Git->Add
将暂存的项目提交到本地仓库然后提交到远程仓库(IDEA里将这两步骤简化为一步 即Commit and Push)
右键项目->Git->Commit Directory之后弹出如图所示的窗口,在Commit Message 输入 test, 然后点击 Commit And Push
这里会询问你要提交的哪里去,点击Define remote,并输入在" 创建成功,得到git地址 "步骤中的:
https://gitee.com/cexoityygy/zshop_parent.git #gitee.com https是好的
git@github.com:xiongshaowen/zshop.git #github.com的https上传老是出问题
再push
- IDEA里代码提交和项目更新
把HiWorld随便改改,只要和以前不一样就行
使用快捷键CTRL+K,就会弹出提交的界面,点击Commit and Push即可
点击快捷键Ctrl+T,就会弹出更新的界面,点击OK即可 - 用IDEA从github上pull一个现成的项目到本地,并使用
一。checkout
只有打开一个空工作空间,或关闭项目后,会有这种菜单选对,如果是当前有项目时,没有这种选择菜单。
菜单->VCS->Get from Version Control->Github(或者Git)
二。输入项目参数
输入URL,点击test即可
这里的URL就是Gitee上的项目git地址
Git Repositor URL:https://gitee.com/how2j/higit.git
Parent Directory: e:\project
Directory Name: higit
然后点击 Clone
***附上一个github.com上的在线商城项目,ssh地址和个token(没有用过),IDEA---GET FROM version control 直接可用 ***
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
git@github.com:xiongshaowen/zshop.git
四个git版本控制库远程托管服务器
github.com 账号:xiongshaowen,密码:cexoit1983 ssh -T git@github.com
gitee.com 账号:13065156391,密码:cexoit1983 ssh -T git@gitee.com
coding.net 账号:xiongshaowen ,65179334@qq.com,密码:cexoit1983! ssh -T git@e.coding.net
gitlab(自搭建的) 超级管理员root,cexoit1983 ,自已:xiongshaowen,cexoit1983 ssh -T git@gitlab.example.com
举当前常用的远程仓库为例:coding.net 当前常用。
远程版本库我经常是这样用的,以coding.net
为例:
- 第一次发布。
首先:建立本地库与远程库的关联
------第一次吗,肯定是本地还没有库吧?这很容易理解吧?我是先:把整个项目的根目录设为git库管理。
现在到工作空间的项目里面
1----用git工具做
$git init
$git config --local user.name "65179334"
$git config --local user.email "65179334@qq.com"
$remote add origin https://e.coding.net/xiongshaowen/nosql/mavenspringboot_idea.git
$git checkout -b zshop //切换分支,如果没有这条命令,会上传到master分支中。
$git add .
$git commit -m "sdfa"
$git pull --rebase origin master/其它分支 //撤回刚才的提交,初始化远程库或分到本地版本控制库中,初次上传用到,远程仓库不可为空
git push -u origin master/或其它分支名如我在redis库中有一个分支redisconn
2----Ecelipse做的方式
右击项目---->share project----git----如下列图示:点‘create Repository'后,这样就把diancan202301设为git管理库了。然后,再team---add to index,把版本放到暂存区,再然后,team---commit 写入一个“提示信息’,commit,最后team---remote push,把远程库的地址拷过来,粘到到url中。选择对应的分支,发布。
----如果出现如下图所示的问题,则有如下两种方式处理:
导致这个问题的是由于之前在微服务模块化拆分的时候,未作好全面的考虑,所以在后来扩展包的时候,微服务模块名进行了更改的操作,再提交时候,就出现了与远程仓库代码冲突的情况,解决办法分为两步:第一:Fetch ,第二步:Merge,然后再提交代码就OK咯(这儿只讲通过命令的方式,和IDE中操作一样的,右键选择相应的命令执行即可!!!)。
一,如上图的所示,再勾选'Force Update'.
二,先team---pull或team--remote fetch ,,,pull了一下,又会出现The current branch is not configured for pull No value for key remote.origin.url found in configurat的问题 这样处理:
点击Window,选择Preferences,依次点开Team–>Git–>[Configuration],选择Respostitory Settings,点击Location后面的Open
打开config文件,输入如下内容:这样就把本地库与远程库关联了。不用勾选‘force update'选项了。
[core]
repositoryformatversion = 0
filemode = false
logallrefupdates = true
[branch "master"]
remote = origin
merge = refs/heads/redisconn
[remote "origin"]
url = https://e.coding.net/xiongshaowen/nosql/diancan202301.git
fetch = +refs/heads/*:refs/remotes/ogigin/*
-----------------------------------------------------------------------------github.com------------------------------------------------------
[core]
repositoryformatversion = 0
filemode = false
logallrefupdates = true
[remote "origin"]
url = https://github.com/xiongshaowen/mvcMaven.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
-----------------------------------------------github.comm注意事项------------------------------------------------
一,本地产生公钥,还是如rsa算法,不是什么下面说的要用其它算法,暂时测试这样管用。
ssh-keygen -t rsa -C "your-email"
-----把.ssh文件夹下的id_rsa.pub内容复制到github.com的new sshkey中。
------2022年3月15日之后,github不再支持SHA-1的加密方式了。
将SHA-1的加密方式修改为ECDSA
的方式,并把公钥加入到github中,具体操作步骤如下。
生成ECDSA密钥
ssh-keygen -t ed25519 -C "your-email"
一路回车。
会在.ssh目录下生成两个文件
id_ed25519
id_ed25519.pub
将id_ed25519.pub文件中的内容copy,拿出来到github
-----------一次成功的测试中,以上两个公钥我都加到了github.com中,不知是哪个起作用了。
二,一般要从浏览器中登陆github.com,再用邮箱发送6位数字,验证此设备可用。
三,要从github.com官网,申请token,令牌。再复制,当克隆或发布时,会弹出一个对话框让输入用户名,与密码,其中密码用了它,不是在如下图所示的时候填码,这个密码填登陆网站注册账号的密码。
右击项目-----team------reomte-----fetch from ....,再点 remote----push
---------git fetch 仅取回本地相对于上一次 git fetch 时远端仓库新增的修改,故而 git fetch 命令并不一定会获得整个 origin/MD5sum 所包含的文件数据,假如本地仓库之前已经获取过 origin/MD5sum 分支的数据,则再次运行 git fetch 只会获得远端仓库新增的修改,而不是整个项目。
3----IDEA做,与1----git做一样,不过IDEA中,可以按ALT+F12,进入Terminal命令窗口
-----下面是把本地的java-diancan项目,发布到远程仓库(e.coding.net)的分支diancan202301中。
>git init #把本项目根目录设为版本库
>remote add origin https://e.coding.net/xiongshaowen/nosql/mavenspringboot_idea.git
>git checkout -b diancan202301 //切换分支,如果没有这条命令,会上传到master分支中。
>git add .
>git commit -m "点餐小程序java后台第一次发布"
$git pull --rebase origin diancan202301/其它分支 //撤回刚才的提交,初始化远程库或分到本地版本控制库中,初次上传用到,远程仓库不可为空,本次操作没用到
>git push -u origin diancan202301 -f //-f,本次操作无效
- 第一次下载(克隆项目)
1----git工具做
git clone https/ssh地址
2-----eclipse做
下载地址让其自动生成,我们不用建
项目会导入到工作空间中,可以开发了,但是有一个问题:java项目没事,maven或springboot maven工程会运行不了,我们可以这样:
右击项目----configure-----Convert to maven project
3------IDEA中做
--------如果进不了这界面,可以通过"close project",来到该界面,这样克隆下来的是默认的主分支项目。
1.切换版本工具,因为IDEA默认设为subversion工具(svn),即断开svn。
首选:安装svn disconnt插件,上面已讲了。
然后:安装好了svn disconnt插件后,vcs菜单上有svn disconnect项,点击之断开svn连接。
再后:点击 ’enable version control integration---------git -----ok"
2.克隆想要的分支项目,本例:我的diancan202301在远程库的diancan202301分支上。,所以我要克隆它下来,步骤如下列图。
经过测试:不用图上所说的先新建本地分支这样会很麻烦因为建后,数据不对应,还要git pull --rebase等,我们只要在远程分支diancan202301--右键checkout即可把它克隆到本地,并命名为diancan202301
3.切换分支操作。只要如上图所示,右击另外分(如master), checkout,则就切换到另一个项目了。
- 后期维护更新,提交操作
这就很简单,先add暂存区,再commit提交,再push上传提交
更新:直接team--->pull
本地库创建分支与切换分支
1----git工具做
//进入到库根目录下,右键 git bash here
$git branch 分支名
$git checkout 分支名 //切换分支
2---eclipse或IDEA做
eclipse
右击项目名-----teat-----switch to ----new branch
右击项目名-----teat-----switch to ----other
IDEA
- 举例:我现在在coding.net的redis库中创建一个分支diancan,把diancan2020301项目发布到这个分支上。
-----现在远程(coding.net)有一个版本库redis,其账号名'65179334'.在NoSQL项目下。redis库有一个分支redisconn,上传了STS-ECLIPSE项目'redisconn'.
首先:登陆coding.net,再建一个项目,再在项目下创建redis代码库,再点分支,创建diancan分支,此时是空的。
然后:STS有一个项目’diancan202301',现在没有纳入git管理,现在我们把它设为git管理库
右键项目名----team-----share project,有‘’>‘’号,表示纳入git管理了。
再然后:add to index,commit and push了,一定要选远程仓库地址对应的分支呀!上传后的远程库如下图所示:
大总结:其实只需要进行下面几步就能把本地项目上传到远程仓库。
远程下载,https协议的话,不用登陆账号(e.conding.net证实了),只要仓库地址https://xxxxx.git即可。ssh协议的话要生成私钥,复制粘贴 。
1、在本地创建一个版本库(即文件夹),通过git init把它变成Git仓库;
创建本地用户,用于上传验证,一定要对应远程的用户名,邮箱.
git config --local/global/system user.name "账户名"
git config --local/global/system user.email ''邮箱"
产生公钥,放到远程公钥中。ssh-keygen -t rsa -C "your regiter's email"
测试连通性ssh -T git@github.com/git@gitee.com/git@e.coding.net
可以用ssh地址关联远程仓库了。(本身的,别人的把该密钥加上了你也可ssh连接别人的库了)
eclipse生成公钥,https连接不用(账号密码),是给ssh连接用的
一、配置git的 user.name 和 user.email (Windows ——> preference ——> 输入git ——> configuration )
二,生成公钥私钥
三,生成的公钥私钥位置
但是千万要记住一点,eclipse本身是可以进行密钥自动创建,如果创建了密钥则会自动保存在用户./ssh目录下。那么已有的密钥就会被覆盖。如果已经存在密钥可以进行密钥的加载操作。
四,在git远程官网上搜 SSH Keys t 添加 ssh2
复制上图生成的公钥部分的公钥,打开gitee设置>安全设置>SSH公钥
五,连接gitee时.只需要复制SSH链接就好了
2、把项目复制到这个文件夹里面,再通过git add .把项目添加到仓库;
3、再通过git commit -m "注释内容"把项目提交到仓库;
----如果此时需要同步gitee仓库中的文件(gitee仓库和本地都有文件,需要先同步,再提交项目名邮件>Team>remote>Fetch From,URI里面贴上仓库的地址,完成后项目右键点击Team>Pull...
4、在Github上设置好SSH密钥后,新建一个远程仓库,通过git remote add origin ```https://github.com/guyxxxxx/xxxx.git```将本地仓库和远程仓库进行关联;
5、最后通过git push -u origin master把本地仓库的项目推送到远程仓库(也就是Github/Gitee/e.coding)上;(若新建远程仓库的时候自动创建了README文件会报错,解决办法看上面)。
github遇到的问题,这是https上传时遇到的,下载似乎没问题
- git出现cannot open git-receive-pack
解决方法一:(似乎有用)
经过网络查询,发现大部分的解决办法都是在软件关于Git的配置中增加一个健值对,即http.sslVerify=false,如下图:
但是经过使用此解决办法后,重新启动Eclipse,代码提交过程中依然出现上述问题,当然了这一步也要做的。后来测试,要安装git工具后,再配环境变量,在git工具中:git push -u origin master不出问题一样,暂还不百分百确定。反正是反反复复多试几次,就成功下载克隆了。
解决方法二:
您在Github上没有帐户
您没有通过电子邮件验证在Github上完成您的帐户
您的用户名没有该存储库的推送权限(例如,您的用户名未列为贡献者)(我遇到的是这个,后来生成个人token)
您意外使用了错误的用户名(替换为该存储库上没有推送权限的用户名)
您输入的密码错误
您使用了错误的协议(例如,当只有其他协议可以接受时,您使用了SSH或HTTPS)
解决方法三:(没用到,但写上去了)
安装目录下查找文件myeclipse/sts/my.ini,尾部添加一行:“-Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2”,也没有成功,我当前是jdk1.8,据说jdk1.7及以下版本不识别https协议。
正当这时,我恍然大悟,极有可能是杀毒软件修改了我的hosts文件,一查看,果然是被修改了。唉,这个要不是自己想到这里估计谁也不会意识到。所以说这个错误是属于情况1,网络问题,但不是断网那么简单。这个也删除了github.com,会出现没有授权。
解决方法四:生成公钥,用ssh协议,又出现了如下问题
git 出现 ERROR: You‘re using an RSA key with SHA-1, which is no longer allowed
----原因是在2022年3月15日之后,github不再支持SHA-1的加密方式了。
将SHA-1的加密方式修改为ECDSA
的方式,并把公钥加入到github中,具体操作步骤如下。
生成ECDSA密钥
ssh-keygen -t ed25519 -C "your-email"
一路回车。
会在.ssh目录下生成两个文件
id_ed25519
id_ed25519.pub
将id_ed25519.pub文件中的内容copy,拿出来到github
-
上传没有权限,这个很可能是要申请个人令牌token,到官网github.com---settings-----Developer settings----tokens(classic)-----Generate new token(classic), 把权限也全勾选 上。.再在上传时输入登入账号时,账号是注册账号,但密码一项时,这时把令牌复制粘上去。
- 上传下载出问题时还有可能是提交版本问题,如分支没有合并,暂存区还有没有提交的,或是修改了没有同步。
-----处理法子:我是这样的:
首先:打开命令工具,一般是安装的git工具。
然后:反复使如下几条命令,查询当前库的状态,直到
$git status //查询当前分支状态,如所有版本信息,未到暂存区,未到对象区(commit之地)情况,一般来说直到暂存区是干净的才可上传到远程。
$git log //所有版本号,sha1值 显示出来。sha1值是commit链点。
$git reset -hard HEAD/HEAD^/HEAD~03/commit_id //退出到上一个,下一个,第三个版本,对应sha1值版本中。
$git merge 分支名 //有时可能分支修改了,修改了内容,删除了内容等 等,但提交的是其在它分支中,这时就要追上那个分,把之合并过来
2. git设置和取消代理的作用(没用到)
当我们访问GitHub的时候一般都会使用梯子,所以往上推代码的时候也是需要梯子,没有梯子推送成功概率很低,一般都会报错超时,所以设置梯子提高访问成功率
git config --global http.proxy 'http://127.0.0.1:9083'
git config --global https.proxy 'http://127.0.0.1:9083
取肖代理
git config --global --unset http.proxy
git config --global --unset https.proxy
查看代理
git config --global --get http.proxy
git config --global --get https.proxy
3. 版本管理
-
版本回退
-----我们每执行一次commit,就产生一个版本。执行git log可以看到当前所有的提交记录,也就是每个版本的信息。每个版本都有一个commit id,版本回退的时候,只需要执行git reset --hard commit_id(commit_id不需要输完,输入前6位即可),就可以回退到对应的版本中。
------github有一个HEAD指针,指向当前版本。如下图,最上面的是最新的版本,执行版本回退之后,github只是将HEAD指针指向了历史版本而已。
------如果我们回退了版本之后,后悔了,又想恢复到较新的版本,怎么办呢?由于这个时候执行git log是看不到较新版本的记录的,需要执行git reflog才行。这个时候我们就得到了所有版本的commit_id,再执行git reset --hard commit_id,就可以吃上后悔药,恢复到较新版本了。
git log -number //会显示最近三提交版信息
git reflog //会显示所有版本id
git reset --hard HEAD //上一个版本
git reset --hard HEAD^ //回退到下一个版本
git reset --hard HEAD~100 //则是往前倒数第100个版本
git reset --hard commit_id //回到版本号的位置
- 管理修改
----这个时候,修改的内容只是存在于工作区中,这个时候直接执行git checkout -- readme.md即可(即把版本库的readme.md签出到工作区)。注意"--"不能少,不然就是切换分支了。再执行git checkout -- readme.md将修改从工作区中删除 - 删除文件,如何恢复
----假设我们分支里有一个test.txt文件(即已经commit到分支),这个时候我们在工作区中把test.txt删除了,该如何恢复呢?由于版本库中还有test.txt,我们只要把它签出即可:git checkout -- test.txt。当然还有另一种情况,就是我们确实是要删掉test.txt的,那么我们需要先执行git rm test.txt,再执行git commit -m "xxx"即可。这和新增修改是一样的。 - 分支管理
方法1,创建分支的同时,切换到新建分支:
git checkout -b dev # dev是新建分支名
方法2:,先新建分支,再切换:
git branch dev
git checkout dev
git branch //查看当前分支
- 合并分支
想把dev合并到master分支,那么需要先切换到master,然后再merge:
git checkout master
git merge dev
上面的方式是Fast-forward模式,即“快进模式”,直接把master指向当前的提交。这种方式速度快,但是有一个缺点,就是当我们把dev分支删除后,dev分支的信息就丢失了。如果希望保留dev分支信息,可以用--no-ff方式:
git checkout master
git merge --no-ff -m "merge with no-ff" dev
这样相当于新建了一个commit(看到-m这个参数了吗),通过下面的命令,我们可以看到这个commit的信息:
git log --graph --pretty=oneline --abbrev-commit
这个时候就可以把dev分支删除了:
git branch -d dev
Gitlab配置
-----github只能是开源公开的,想要私人版本,是要收费的。所以我们可以自已搭建私有的免费版本库,功能相当github,有可加入团队,评论等功能。
- 下载工具(该工具没有windows版,所以我们只能用linux,我是Centos 7),我们下载ce版,不要下载ee版(收费)
//官网
https://packages.gitlab.com/gitlab/gitlab-ce
//下载了gitlab-ce-14.0.4-ce.0.el7.x86_64.rpm
- 安装配置
安装说明参考:https://gitlab.cn/install/
- 安装和配置必须的依赖项
一。在 CentOS 7上,下面的命令也会在系统防火墙中打开 HTTP、HTTPS 和 SSH 访问。这是一个可选步骤,如果您打算仅从本地网络访问极狐GitLab,则可以跳过它,我还要做一些的, 我不是本地,是云端,登陆的是root用户,不要sudo。
sudo yum install -y curl policycoreutils-python openssh-server perl
sudo systemctl enable sshd
sudo systemctl start sshd
//下面同步我没做,因为我的防火墙是关闭的
//sudo firewall-cmd --permanent --add-service=http
//sudo firewall-cmd --permanent --add-service=https
//sudo systemctl reload firewalld
//(可选)下一步,安装 Postfix 以发送电子邮件通知。如果您想使用其他解决方案发送
//电子邮件,请跳过此步骤并在安装极狐GitLab 后[配置外部 SMTP 服务器],我是要的。
sudo yum install postfix
sudo systemctl enable postfix
sudo systemctl start postfix
//离线安装rpm,因为在线安装很慢, 已下载上传进/usr/local中
rpm -ivh gitlab-ce-11.5.7-ce.0.el7.x86_64.rpm
EXTERNAL_URL="http://gitlab.example.com" //外部访问路径,如 ssh -T git@gitlab.example.com
//除非您在安装过程中指定了自定义密码,否则将随机生成一个密码并
//存储在 /etc/gitlab/initial_root_password 文件中(出于安全原因,24 小时后,此文件会被第一次
gitlab-ctl reconfigure
//自动删除,因此若使用随机密码登录,建议安装成功初始登录成功之后,立即修改初始密码)。使用此密码和用户名 root 登录。
二。启动、停止,如果有问题,极有可能是防火墙的问题。
gitlab-ctl start /stop
systemctl stop firewalld //关闭防火墙
systemctl disable firewalld //开机启动自动关闭防火墙
三。访问服务器,增加用户(不可能一直用root登陆吧)
首先:登陆
然后:修改root密码
最后:又重新登陆
- 创建用户,创建团队,组里面创建项目(版本库)
先以root用户登录
后,增加用户,选如下权限(xiongshaowen,cexoit1983,65179334@dqq.com
配置SSH key,我一般都打包了一个,本地账号对应的SSHKEY,直接从网盘下载解压,考贝id_rsa.pub内容到gitlab,私钥是本地的
- 测试举例
-----我们现在创建一个本地仓库mygit,创建一个文件放进去a.txt,再上传发布
git init
touch a.txt
git add .
git commit -m "init"
git remote add origin git@gitlab.example.com:myjavaweb/myproject1.git
git push -u origin master //发布时出现了如下错误
//错误 1
ssh: Could not resolve hostname gitlab.example.com: Name or
service not known
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
//处理办法:在linux系统中,设置
//方法1
EXTERNAL_URL="http://gitlab.example.com"
gitlab-ctl reconfigrue //这一步太慢了,最好在安装rpm后做此事,如果已reconfigure,用下面的方法很方便
//方法2,C:\Windows\System32\drivers\etc\hosts中加入如下内容,ip gitlab.example.com
47.108.50.98 gitlab.example.com
//错误2 初次发布时,虽然关联了远程库,但是远程库在创建时自动初始化了有如README.md文件,这时在发布之前先
git pull --rebase origin master
//再
git pull -u origin master
遇到的问题
- Job for postfix.service failed because the control process exited with error code. See "systemctl st
修改 /etc/postfix/main.cf的设置
vim /etc/postfix/main.cf
inet_protocols = ipv4
inet_interfaces = all
修改后重启服务
systemctl restart postfix