Spring Cloud Config复习-Git
前言:
配置文件是我们再熟悉不过的,在微服务系统中,每个微服务不仅仅只有代码,还需要连接其他资源,例如数据库的配置或功能性的开关 MySQL、Redis 、Security 等相关的配置。除了项目运行的基础配置之外,还有一些配置是与我们业务有关系的,比如说七牛存储、短信和邮件相关,或者一些业务上的开关。
随着微服务系统的不断迭代,整个微服务系统可能会成为一个网状结构,这个时候就要考虑整个微服务系统的扩展性、伸缩性、耦合性等等。其中一个很重要的环节就是配置管理的问题。
由于常规配置管理有很大的缺点,所以采用Spring Cloud Config 集中式的配置中心来管理每个服务的配置信息。
Git使用教程
一: Git是什么?
Git是目前世界上最先进的分布式版本控制系统
二: SVN与Git的最主要的区别?
SVN是集中式版本控制系统,版本库是集中放在中央服务器的
SVC不安全:^一旦服务器天灾人祸电脑进水了,不能保证你代码的安全。
Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。
Git分布式系统,可以防止容灾,达到高可用的效果因为^看加粗--》缺点:占空间
三:在windows上如何安装Git?
msysgit是 windows版的Git,如下:
会弹出一个类似的命令窗口的东西,就说明Git安装成功。如下:
安装完成后,还需要最后一步设置,在命令行输入如下:
因为Git是分布式版本控制系统,所以需要填写用户名和邮箱作为一个标识。
注意:git config --global 参数,有了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然你也可以对某个仓库指定的不同的用户名和邮箱。
四:如何操作
这个裴老飞就不看文档了,直接
登进去之后1.
4.1 克隆git
图床用不了了,截图就少点
用SSH复制,桌面右击Git Bash Here,敲命令行
git clone git
用ssh克隆下来把本地仓库从git上克隆下来,到时候直接git push 就可以直接同步
指令克隆到桌面后,生成SSH公钥
公钥生成及设置:
4.2 生成/添加SSH公钥
Gitee 提供了基于SSH协议的Git服务,在使用SSH协议访问仓库之前,需要先配置好账户/仓库的SSH公钥。
你可以按如下命令来生成 sshkey:
ssh-keygen -t ed25519 -C "a15637633207@163.com"
Generating public/private ed25519 key pair.
三次回车
三次回车
Enter file in which to save the key (/c/Users/86156/.ssh/id_ed25519):
/c/Users/86156/.ssh/id_ed25519 already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/86156/.ssh/id_ed25519
Your public key has been saved in /c/Users/86156/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:gApiDLXDfdC/OkTP5i+8OAOrMJ83J9ReJRvPTp+m+LA a15637633207
查看公钥:
$ cat ~/.ssh/id_ed25519.pub
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJ1lDqcJsDnfO+1uOttAi5WU8+aKbFHNOxhiYuZaDUjo a15637633207
把公钥复制到Gitee上的ssh公钥,标题会自动填写。(复制生成后的 ssh key,通过仓库主页 「管理」->「部署公钥管理」->「添加部署公钥」 ,添加生成的 public key 添加到仓库中。)
克隆完可以熟悉一下git常用指令
git config --global user.name 用户名
git config --global user.email 邮箱
git config --list 列表显示
//自动补全代码 tab键
cd 转路径
git clone (网址) 克隆
ssh-keygen -t ed25519 -C "xxxxx@xxxxx.com" 生成sshkey
$ cd ~/.ssh 进入.ssh目录
ll 查看所有内容
$ cat ~/.ssh/id_ed25519.pub 查看钥匙串
rm -rf空格+名称 删除东西
git status 查看当前版本库的状态:
git add 文件名 (作用添加到暂存区)
git status (查看状态)
git commit -m "......" (提交 ""里面是你写的注释)
git diff 文件名 (查看文件修改内容)
git log --pretty=oneline (查询修改历史记录)
git reset --hard HEAD^ (回退到上个版本)
git reflog (查看版本号)
git reset --hard 版本号 (回到目标版本)
rm 文件名 (删除文件)
git checkout -- 文件名 (恢复没有被commit删除的文件)
git checkout -b dev (创建并切换分支dev ,dev是分支名可以改的)
git branch (查看当前的分支)
git checkout master (切换分支master)(注意有没有--很重要)
git merge dev (在当前分支上合并dev分支内容)(dev分支名可以替换)
git branch -d dev (删除dev分支)
git push (同步到gitee仓库)
上面的命令告诉我们 readme.txt文件已被修改,但是未被提交的修改。
接下来我想看下readme.txt文件到底改了什么内容,如何查看呢?可以使用如下命令:
git diff readme.txt 如下:
2版本回退
如上,我们已经学会了修改文件,现在我继续对readme.txt文件进行修改,再增加一行
内容为33333333333333.
git add 1.txt
git status
git commit -m "1.txt新增3333333"
现在我已经对readme.txt文件做了三次修改了,那么我现在想查看下历史记录,如何查呢?我们现在可以使用命令 git log
git log
commit 084da59716429f6172e1ffd46372331b65c3231b (HEAD -> master)
Author: weileta <a15637633207
可以看出来,显示太长了,不方便看(尽量别用容易退不出来,用下边的就好-整洁)
git log命令显示从最近到最远的显示日志,我们可以看到最近三次提交,最近的一次是,增加内容为333333.上一次是添加内容222222,第一次默认是 111111.如果嫌上面显示的信息太多的话,我们可以使用命令 git log –-pretty=oneline 演示如下:
git log --pretty=oneline
084da59716429f6172e1ffd46372331b65c3231b (HEAD -> master) 1.txt新增3333333
6b6cc13e6df13e19a6367342151c0861f27e5f4a 新增22222222
3bd20a0d53981a12d575781203c1be836b0e6cc1 新增111111111
85a8666f9b5bfbac9a6bdca779ca696c554fa91e 新增1.txt
c7658db6d96880e50cc38a419b340e1b27aee8e9 (origin/master, origin/HEAD) Initial commit
一行解决
现在我想使用版本回退操作,我想把当前的版本回退到上一个版本,要使用什么命令呢?可以使用如下2种命令,第一种是:git reset --hard HEAD^ 那么如果要回退到上上个版本只需把HEAD^ 改成 HEAD^^ 以此类推。那如果要回退到前100个版本的话,使用上面的方法肯定不方便,我们可以使用下面的简便命令操作:git reset --hard HEAD~100 即可。未回退之前的1.txt内容如下
11111111
22222222
33333333 我想让他回退到1111122222,两种方式
git reset --hard HEAD^ git reset --hard HEAD~100 (回退到前100个版本)
用第一个后已经没有33333了,说明回退成功了,但是现在我想回退到最新的版本,如:有333333的内容要如何恢复呢?我们可以通过版本号回退,使用命令方法如下:
git reset --hard 版本号 ,但是现在的问题假如我已经关掉过一次命令行或者333内容的版本号我并不知道呢?要如何知道增加3333内容的版本号呢?可以通过如下命令即可获取到版本号:git reflog 演示如下:(第一行就是命令)
git reflog 6b6cc13 (HEAD -> master) HEAD@{0}: reset: moving to HEAD^ 084da59 HEAD@{1}: commit: 1.txt新增3333333 6b6cc13 (HEAD -> master) HEAD@{2}: commit: 新增22222222 3bd20a0 HEAD@{3}: commit: 新增111111111 85a8666 HEAD@{4}: commit: 新增1.txt c7658db (origin/master, origin/HEAD) HEAD@{5}: clone: from gitee.com:giteeCangku/java3-repository.git
前6位就是版本号!(恢复到33333的版本)
git reset --hard 084da59 HEAD is now at 084da59 1.txt鏂板3333333 86156@DESKTOP-QN7UOE7 MINGW64 ~/Desktop/java3-repository (master) $ cat 1.txt 11111111111 22222222222 33333333333
3理解工作区与暂存区的区别
工作区:就是你在电脑上看到的目录,比如目录下testgit里的文件(.git隐藏目录版本库除外)。或者以后需要再新建的目录文件等等都属于工作区范畴。
版本库(Repository):工作区有一个隐藏目录.git,这个不属于工作区,这是版本库。其中版本库里面存了很多东西,其中最重要的就是stage(暂存区),还有Git为我们自动创建了第一个分支master,以及指向master的一个指针HEAD。
我们前面说过使用Git提交文件到版本库有两步:
第一步:是使用 git add 把文件添加进去,实际上就是把文件添加到暂存区。
第二步:使用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支上。
4Git撤销修改和删除文件操作
4.1 撤销修改
比如我现在在1.txt文件里面增加一行 内容为555555555555,我们先通过命令查看如下:
cat 1.txt 11111111111 22222222222 33333333333 55555555555
在我未提交之前,我发现添加5555555555555内容有误,所以我得马上恢复以前的版本,现在我可以有如下几种方法可以做修改:
第一:如果我知道要删掉那些内容的话,直接手动更改去掉那些需要的文件,然后add添加到暂存区,最后commit掉。
第二:我可以按以前的方法直接恢复到上一个版本。使用 git reset --hard HEAD^
但是现在我不想使用上面的2种方法,我想直接想使用撤销命令该如何操作呢?首先在做撤销之前,我们可以先用 git status 查看下当前的状态。如下所示:
git status 可以发现,Git会告诉你,git checkout -- file 可以丢弃工作区的修改,如下命令:git checkout -- 1.txt(空格记得)
git checkout -- 1.txt 86156@DESKTOP-QN7UOE7 MINGW64 ~/Desktop/java3-repository (master) $ cat 1.txt 11111111111 22222222222 33333333333 (内容5555555没有了)
命令 git checkout -- 1.txt 意思就是,把1.txt文件在工作区做的修改全部撤销
-
1.txt自动修改后,还没有放到暂存区,使用 撤销修改就回到和版本库一模一样的状态。
-
另外一种是1.txt已经放入暂存区了,接着又作了修改,撤销修改就回到添加暂存区后的状态。
添加到暂存区的,不会被撤销,没添加的会被撤销
注意:命令git checkout -- readme.txt 中的 -- 很重要,如果没有 -- 的话,那么命令变成创建分支了。
4.2 删除文件
先创建
git add b.txt git commit -m "创建了b.txt" rm b.txt
git status On branch master Your branch is ahead of 'origin/master' by 5 commits. (use "git push" to publish your local commits) Changes not staged for commit: (use "git add/rm <file>..." to update what will be committed) (use "git restore <file>..." to discard changes in working directory) deleted: b.txt no changes added to commit (use "git add" and/or "git commit -a")
如上:一般情况下,可以直接在文件目录中把文件删了,或者使用如上rm命令:rm b.txt ,如果我想彻底从版本库中删掉了此文件的话,可以再执行commit命令 提交掉,现在目录是这样的, 不显示b.txt的
只要没有commit之前,如果我想在版本库中恢复此文件如何操作呢?
可以使用如下命令 git checkout -- b.txt,如下所示:
git checkout -- b.txt b.txt回来了
彻底删除b.txt
git rm b.txt git status On branch master Your branch is ahead of 'origin/master' by 5 commits. (use "git push" to publish your local commits) Changes to be committed: (use "git restore --staged <file>..." to unstage) deleted: b.txt git commit -m "删除b.txt" (两个命令就删干净了)
再用上边的命令恢复也不好使,因为commit了,已经找不到了哈哈哈
5远程仓库
我们是直接gitee上克隆到本地的,所以不用弄乱七八糟的一大堆,只用 git push就能把本地仓库的东西同步到gitee仓库上了
6创建与合并分支
在 版本回填退里,你已经知道,每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支。HEAD严格来说不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是当前分支。
首先,我们来创建dev分支,然后切换到dev分支上。如下操作:
git checkout -b dev Switched to a new branch 'dev' 86156@DESKTOP-QN7UOE7 MINGW64 ~/Desktop/java3-repository (dev) $ git branch * dev master
git checkout 命令加上 –b参数表示创建并切换,相当于如下2条命令
git branch dev
git checkout dev
git branch查看分支,会列出所有的分支,当前分支前面会添加一个星号。然后我们在dev分支上继续做demo,比如我们现在在1.txt再增加一行 7777777777777
首先我们先来查看下1.txt内容,接着添加内容77777777,如下:
86156@DESKTOP-QN7UOE7 MINGW64 ~/Desktop/java3-repository (dev) $ cat 1.txt dev分支上未添加内容之前 11111111111 22222222222 33333333333
添加内容之后
cat 1.txt 11111111111 22222222222 33333333333 77777777777
git add 1.txt 86156@DESKTOP-QN7UOE7 MINGW64 ~/Desktop/java3-repository (dev) $ git status On branch dev Changes to be committed: (use "git restore --staged <file>..." to unstage) modified: 1.txt 绿色的暂存区 git commit -m "1.txt 新增777777" [dev 8518937] 1.txt 鏂板777777 1 file changed, 2 insertions(+), 1 deletion(-)
现在dev分支工作已完成,现在我们切换到主分支master上,继续查看readme.txt内容如下:
git checkout master (切换分支master) cat 1.txt 11111111111 22222222222 33333333333 (77777777不见了,因为不是分支dev)
现在我们可以把dev分支上的内容合并到分支master上了,可以在master分支上,使用如下命令 git merge dev 如下所示:
git merge dev (在master分支上合并dev分支内容) Updating 211d886..8518937 Fast-forward 1.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 86156@DESKTOP-QN7UOE7 MINGW64 ~/Desktop/java3-repository (master) $ cat 1.txt (查看) 11111111111 22222222222 33333333333 77777777777
git merge命令用于合并指定分支到当前分支上,合并后,再查看readme.txt内容,可以看到,和dev分支最新提交的是完全一样的。
注意到上面的Fast-forward信息,Git告诉我们,这次合并是“快进模式”,也就是直接把master指向dev的当前提交,所以合并速度非常快。
合并完成后,我们可以接着删除dev分支了,操作如下:
7(删除dev分支)
git branch -d dev Deleted branch dev (was 8518937). 86156@DESKTOP-QN7UOE7 MINGW64 ~/Desktop/java3-repository (master) $ git branch * master
8最后一个命令,同步仓库:
从本地仓库同步到gitee仓库中git push
git push Warning: Permanently added the ECDSA host key for IP address '212.64.63.215' to the list of known hosts. Enumerating objects: 19, done. Counting objects: 100% (19/19), done. Delta compression using up to 12 threads Compressing objects: 100% (13/13), done. Writing objects: 100% (18/18), 1.40 KiB | 715.00 KiB/s, done. Total 18 (delta 7), reused 0 (delta 0), pack-reused 0 remote: Powered by GITEE.COM [GNK-6.4] To gitee.com:giteeCangku/java3-repository.git c7658db..8518937 master -> master