Git
【Git】SSL certificate problem: unable to get local issuer certificate错误的解决办法
git错误SSL certificate problem: unable to get local issuer certificate
【Git】SSL certificate problem: unable to get local issuer certificate错误的解决办法
【IntelliJ IDEA插件】值得推荐的Idea几十大优秀插件、神级超级牛逼插件推荐(自用,真的超级牛逼)
一.Git概述
-
Git是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目,就是管理代码的
1.1版本控制
-
版本控制是一种记录文件内容变化,以便将来查阅特定版本修订情况的系统
-
版本控制其实最重要的是可以记录文件修改历史记录,从而让用户能够查看历史版本,方便版本切换
1.2 版本控制工具
-
集中式版本控制
-
常见工具:CVS(最早、开源、免费),SVN(开源、免费,目前用的最多),VSS(集成在Visual studio中)…
-
描述:我们比较熟悉的SVN是集中式的版本控制系统,回想一下在使用svn时,每次干活之前,需要先从中央服务器(服务端)取出最新的版本,然后开始工作,干完活了,工作完后推送给中央服务器。此时的中央服务器就好比是一个图书馆,如果你要修改一本书,需要先从图书馆借出来,然后回到自己家修改,改完之后,需要在送回到图书馆。
-
-
分布式版本控制
-
常见工具:git(免费、开源)、 Mercurial(轻量级) 、Monotone(免费)…
-
描述:分布式版本控制系统是没有“中央服务器”,每个人的电脑上都是一个完整的版本库,工作的时候,不再需要联网。开始工作前,在客户端克隆出完整的代码仓库,然后就可以在家、在公交车等等随心所欲地修改代码并提交了,提交到本地电脑,等到有网的时候就可以一次性地将本地仓库推送到远端仓库(临时中心服务器)中,这样一来,每个人都可以独立进行改动资料,并且所有的改动都是在完整资料信息的环境下进行的。
-
1.3 Git简史
同生活中的许多伟大事物一样,Git 诞生于一个极富纷争大举创新的年代。
Linux 内核开源项目有着为数众多的参与者。 绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上(1991-2002年间)。 到 2002 年,整个项目组开始启用一个专有的分布式版本控制系统 BitKeeper 来管理和维护代码。
到了 2005 年,开发 BitKeeper 的商业公司同 Linux 内核开源社区的合作关系结束,他们收回了 Linux 内核社区免费使用 BitKeeper 的权力。 这就迫使 Linux 开源社区(特别是 Linux 的缔造者 Linus Torvalds)基于使用 BitKeeper 时的经验教训,开发出自己的版本系统。 他们对新的系统制订了若干目标:
-
速度
-
简单的设计
-
对非线性开发模式的强力支持(允许成千上万个并行开发的分支)
-
完全分布式
-
有能力高效管理类似 Linux 内核一样的超大规模项目(速度和数据量)
自诞生于 2005 年以来,Git 日臻成熟完善,在高度易用的同时,仍然保留着初期设定的目标。 它的速度飞快,极其适合管理大项目,有着令人难以置信的非线性分支管理系统(参见 Git 分支)。
1.4 Git工作机制
-
工作区:就是一个存放代码的文件夹
-
工作区代码从工作区添加到暂存区临时存储,此时还是可以对其做删除操作的,之后再提交到本地库,一旦生成历史版本,代码就删不掉了,之后还可以把代码推送(push)到远程库
1.5 代码托管中心
-
代码托管中心是基于网络服务的远程代码仓库,一般我们称它为远程库
二.Git的安装
-
找对应的64位操作系统,下拉获取最新版
三.Git常用命令
-
不管是什么时候的修改,修改之后一定要add和commit,不然白修改
-
输入命令的前几个字母以后,按两下tab键,会自动补全,和Linux一样
3.1 设置用户签名
-
设置用户签名:签名的作用是区分不同操作者,用户的签名在每个版本的提交信息中都能看到,为了确认本次提交是谁做的,Git首次安装必须设置一下用户签名,否则无法提交代码。
-
注意:这里的用户签名和将来登录GitHub(或者其他代码托管平台)的账号无任何关系。
-
-
想要查看改写的用户名和邮箱路径:C:\Users\阳光.gitconfig
3.2 初始化本地库
-
git init
-
要让git管理你的目录,需要让git获得管理权
-
要想让git的黑框框进到项目目录里面,直接在对应文件夹页面右键打开git客户端就可以直接进入,不用输入盘符
-
输入git init之后在当前文件夹下会创建一个隐藏的git文件夹
-
直接输入查看命令ll无法看到隐藏文件,输入ll -a即可查看
3.3 查看本地库状态
-
git status
-
vim hello.txt进入文件 按下i进入insert编辑模式 输入完毕后 按shift+;输入wq退出 在读取模式按下yy是复制当前行,按p是粘贴
-
红色表示已经有了一个文件但是这个文件没有被git追踪,就是还没有被添加到暂存区里面
3.4 本地文件添加到暂存区里面
-
在windows系统里面,换行符是CRLF,但是在Linux里面是LF,所以提示警告要更改
-
添加之后再次查看状态,发现之前的红色变成了绿色代表git已经追踪到文件,文件存在于暂存区里面
-
如果要删掉暂存区里面的文件需要用上图提示到的命令,注意这个删除只是把暂存区里面的删掉,工作区还是有的
3.5 将暂存区的文件提交到本地库
-
git commit -m "日志信息" 文件名
-
日志信息就是自己想写的话
-
-
master后面的七位数字就是版本号
-
查看版本信息的命令 git reflog
-
查看详细版本信息的命令 git log
-
这个命令可以看到作者和提交日期
-
可以看到黄色的一长串的完整版本号
-
3.6 修改文件
-
vim命令 快捷键 esc状态下shift+zz可以快速保存并退出
-
文件变红表示这个文件已经被修改但是还没有添加到暂存区
-
修改多次,但是本地工作区只有一个文件,且是已经被修改,因为底层是使用指针控制的
3.7 历史版本
3.7.1 查看历史版本
-
查看精简 版本信息的命令 git reflog
-
查看详细版本信息的命令 git log
3.7.2 版本穿梭
-
切换版本命令
-
git reset --hard 版本号
-
可以看到切换之后指针发生了变化
-
一旦版本穿梭之后,本地工作区的文件也会发生修改,底层原理是指针,master的指针指向修改的版本,head的指针随之修改指向master
四.Git分支
4.1 什么是分支
-
在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务的单独分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时候,不会影响主线分支的运行。对于初学者而言,分支可以简单理解为副本,一个分支就是一个单独的副本。(分支底层其实也是指针的引用)
-
热修分支就是紧急修改
4.2 分支的好处
-
同时并行多个分支,提供工作效率
-
各个分支开发过程中如果一个分支开发失败,不会对其他分支产生影响,失败的分支删除重新开始即可
4.3 分支的操作
4.4 切换分支
-
注意看后方蓝字 从master分支切换到了hot-fix分支
-
git branch -v 是查看所有分支
-
git branch 分支名 是创建分支
4.5 修改分支
-
在hot-fix上修改代码hello.txt
-
直接vim hello.txt
-
之后:wq就可以
-
注意这次修改并没有影响到master分支的hello.txt文件,要想影响更新,就要合并分支
4.6 合并分支(正常合并)
-
注意立场:要想把别的分支的合并到现在的分支,需要先站在现在的分支之上
-
要想把hot-fiix分支合并到master分支上,需要自己先站在master分支上
-
hot-fix分支的代码是基于master分支修改的,合并之后显示的就是hot-fix修改之后的代码,所以并没有发生冲突。
4.7 合并分支(冲突合并)
-
冲突合并就是master也改了,hot-fix也改了,而且修改的是同一个文件的同一位置(相同行或者相邻行),或者一个人改动了那些被另一个人删除了的代码,此时git会报错,git无法替我们决定该保留哪一个,需要我们人为决定
-
操作
-
先切换分支到热修并且更改和提交hello
-
再切换到master分支并尝试合并,但是报错,有冲突
-
此时需要在当前状态下修改文件并添加和提交
-
注意提交冲突文件时不能加文件名,因为git不知道提交的是哪一个分支的文件,只可以写相关版本信息
-
合并只会修改主场分支的文件,不会修改被合并的分支的文件,这里hot-fix被合并到master,但是hot-fix分支的文件不会被修改
-
合并分支底层玩的也是指针
-
head指向master,master指向版本
五.Git团队协作机制
5.1 团队内协作和跨团队协作
-
团队内协作
-
跨团队协作
5.2 团队内协作
5.2.1 邀请加入团队
-
选择邀请合作者
-
需要被邀请成员复制邀请函
-
然后让被邀请成员在地址栏里复制邀请函地址
-
之后被邀请成员就可以推送拉取仓库的代码了
5.3 跨团队协作
-
可以把别人的代码叉一份给自己的仓库,然后修改即可,就是进入别人的仓库之后,点击右上角的fork
-
可以用命令克隆一份别人的代码
-
自己修改之后,点击pull request发送让被复制人拉取的请求
-
之后点击Merge pull request把别人写的代码合并到自己的代码
六.GitHub操作
6.1 创建远程仓库
-
进入github之后右上角加号创建仓库
6.2 远程仓库操作
-
远程库链接 在绿色的Code下
6.2.1 创建远程库别名
-
连接太长记不住就创建别名
-
git remote -v 查看有哪些别名
-
git remote add 别名 远程库链接
6.2.2 推送本地库代码到远程库
-
git push 别名(也可以直接放链接) 分支
-
推送的最小单位是分支,命令表示把分支推送到远程库里
-
这里推送的时候链接可以换成别名,而且会弹出小窗,提示要绑定账号,同意即可
-
windows10利用Git直接向Github推送文件与文件夹
-
首先到指定文件夹内,右键调出git bush here窗口
-
输入git init初始化本地库
-
把所有文件使用 git add . (注意有点表示全部)
-
之后再提交到本地库 使用 git commit -m "版本信息" (之后直接回车,表示全部推送)
-
创建github远程库
-
给github用git remote add 别名 链接起别名
-
之后用git push 别名 master即完成推送
-
6.2.3 拉取远程库到本地库
-
命令 git pull 远程库名或地址 分支名(master)
6.2.4 克隆远程库到本地
-
在别的库下打开git bush here
-
然后输入命令 git clone + 网址
-
注意克隆不需要init初始化,因为当初创建的要被克隆的库是公开的
-
个人理解:拉取,你本地已经有文件了,需要更新最新的,克隆,本地完全没有文件,需要所有的文件
-
小结:clone会做如下操作:
-
1.拉取代码
-
2.初始化本地仓库
-
3.创建别名 orgin
-
6.2.5 SSH免密登录
-
在用户目录下创建.ssh目录
ssh-keygen -t rsa -C Libai@Libaiqq.com
-
然后点击三下回车
-
.pub是公钥
-
无后缀的是私钥
-
之后输入命令进入目录找到公钥
-
把公钥复制到git的账号的setting的SSH and KEY
-
一旦添加之后,windows链接git账号就不需要反复输入账号和密码了
-
下面测试连接,用一个pull命令拉取git仓库的代码
-
注意输入完pull命令按回车之后,会提示询问是否连接,要输入yes,才能继续下一步拉取
-
七.IDEA集成Git
7.1 配置Git忽略文件(废弃)
-
白框里面的文件都不想push,因为这些文件与项目的实际功能无关,不参与服务器上部署运行,把他们忽略可以屏蔽IDE工具之间的差异
-
忽略步骤
1.创建忽略文件 xxx.ignore(前缀名随便起,建议是git.ignore),这个文件建议放在用户的家目录下,为了便于让 ~/.gitconfig文件引用,建议也放在用户家目录下
2.git.config文件模板内容如下
-
在家目录下新建配置文件,更改后缀名为ignore
-
再git.config文件中引用文件,注意把路径复制过来的反斜杠改成正斜杠
-
打开IDEA配置一下Git
-
右边红框里面是git安装目录下bin目录下的git.exe
-
以下为推荐方式(已更新)
### Example user template template
# IntelliJ project files
.idea
*.iml
out
gen
HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**
!**/src/test/**
### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
### IntelliJ IDEA ###
.idea
*.gitignore
*.iws
*.iml
*.ipr
.gitignore
### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/
### VS Code ###
.vscode/
-
注意把忽略文件放到项目文件夹下,在项目内表示为把.gitignore直接拖到左上角项目上里
-
第二种方法:安装插件之后在项目名上右键,选择new 选择.ignore再选择第一个example user template
7.2 IDEA初始化本地库和项目的添加提交
-
找到IDEA上方的VCS(version control settings版本控制工具)
-
找到项目的根目录,之后直接点击OK,此时在项目的目录下面出现了.git文件夹,说明项目被IDEA初始化了
-
此时发现项目名字全部变红,表示项目还没有被添加到暂存区
-
此时先要把某些文件添加到暂存区,只要右键找到Add即可
-
提交之后发现文件名全黑色
7.3 切换版本
-
修改已经提交的代码之后,如果想要再次提交,只需要点commit,不用点add,版本切换点击左下角的Git,右键要切换的版本然后checkout就可以
7.4 创建分支和切换分支
-
创建分支第一种找法
-
创建分支第二种找法
-
切换分支,还是右下角
7.5 合并分支(正常合并)
-
hot-fix分支修改并commit
-
切换到master分支,并合并hot-fix分支
-
合并成功
7.6 合并分支(冲突合并)
-
hot-fix分支和master分支都修改了同一行,此时在master分支上点击合并
-
出现conflict弹窗,手动点击merge后,出现弹窗
-
合并成功
八.IDEA集成GitHub
8.1 设置GitHub账号
-
授权成功
8.2 分享工程到GitHub
-
注意找到选项框找到对应的地方
-
share
-
如果项目在github有了,但是里面的代码没成功上传,需要右下角master里面有push,点击一下就可以了
8.3 push推送本地库到远程库
-
push方法一
-
push方法二
8.4 pull拉取远程库到本地
-
pull是把直接在仓库修改了的代码或者别人仓库的代码拉取到自己的本地库
-
在远程库修改代码之后
-
拉取的时候尽量不要改本地的代码,否则还涉及到手动解决合并冲突的问题
8.5 clone克隆远程库到本地
-
已经把代码push到GitHub之后就相当于已经有了代码备份,需要的时候可以直接从远程库克隆
-
法一
-
法二
九.国内代码托管中心——码云
9.1 码云简介
-
防止因为网络原因无法登录github,所以开源中国推出了码云
9.2 码云账号注册登录
-
本人之前已经注册
9.3 码云仓库创建
-
现在要先创建私有库 然后去管理仓库设置公开
9.4 IDEA集成码云
9.4.1 安装码云插件
-
Gitee 去plugins里面找到并下载
-
关联账号
9.4.2 发送项目到码云
-
方法一:直接Gitee
-
方法二:push
-
如果发生reject,gitee创建仓库不要点那个初始化,否则会和idea的push冲突
-
修改之后再push
-
pull拉取代码
9.5 码云复制GitHub项目
-
导入已有仓库,从新建仓库页面的最上面找
-
可以更新,点击上面的圈圈