git版本库操作
1. 注册用户信息 git config --global (邮箱和用户名)
2. 创建工作区 git init
3. 编写文件 vim readme.txt
4. 把文件放到暂存区 git add readme.txt
5. 查看工作区状态 git status
6. 把文件放到本地版本库里 git commit -m "" filename
7. 查看日志详细信息 git log
查看日志简略 git log --pretty=oneline
查看日志精简 git log --oneline (常用)
关于git几个区的含义和用途:
版本控制概念
git
gitlab
git第一天写了10行,把它保存成版本
第二天写了20行,也保存成版本
需要的时版本回滚就行了
直观看,
比如腾讯文档
也有版本保存和恢复的功能
这个版本控制有点像虚拟机的快照
代码的版本控制有点像文件的快照
叫版本
版本服务的软件有哪些
实现版本控制的软件有哪些
集中式有SVN
分布式有Git
分布式版本控制软件Git
想分享自己的代码和保存的时候可以上传到GitLab代码仓库上
代码本来在程序员自己的电脑上,
需要保存和共享的时候可以上传到GitLab代码仓库
和公司的其他同事分享代码
GitLab是server端,也就是服务器端,是管理代码的服务器
Git是相当于客户端
Git是开源的分布式版本控制软件
用c语言编写的,辅助脚本是shell脚本编写的
各linux发行版基本上都默认安装了git软件包,是Linus Torvalds开发的
k8s的版本控制的核心是kubectl apply deployment
每次修改了镜像,在deployment里面修改新的镜像的名字,如果镜像的名称没有变
那么就apply deployment就好了
然后kubectl annotate deployment kubernetes.io/change-cause:"vx"
就能通过kubectl rollout history查看到这个新版本以及注释信息了
如果要版本回滚,就用
kubectl rollout undo deployment xxx --to-revision vx
1. 工作区(workspace),这个叫wx的目录就叫工作区(workspace)
git 版本2
git init wx # 创建一个空仓库,
里面会有一个目录树
这里面有一堆的钩子脚本,
包括commit,这个是提交版本的钩子
git init wx,就会生成一个目录,叫wx
里面就是这么个目录树
每次写代码的时候都得进入这个wx的目录,这相当于开发的工作目录
这里面存放从仓库中提取出来的文件,放在磁盘上供你使用或修改
每次写代码或者改代码都在这个目录下去写,相当于工作目录
工作台,工作区域。
已经写了很多代码的时候,但是没有提前创建.git目录,
这个目录里面也可以用git init命令产生.git目录,来把已有的目录创建成工作区。
每次写完脚本文件保存后,都要上传本地仓库
git的基本使用
yum -y install git # 装包
git init # 创建本地仓库
git status # 看仓库状态
git log # 看提交记录,提交日志
创建一个readme.txt文件之后,就用git status能看到提示有untracked files: readme.txt了,提示用git add提交
用git add提交到暂存区,然后再提交
git add 可以一起提交多个文件
用git add readme.txt之后,用git status查看,
就会提示changes to be commited: new file readme.txt
如果不想提交的话用git rm --cache readme.txt 把这个文件删掉
这个时候用git commit -m "aaa" readme.txt的时候会报错
会提示让创建邮箱和用户名
这个作用是得让gitlab远程仓库知道,这个代码是谁传上来的
而且本地仓库也是,如果没有邮箱和用户名,本地仓库也不知道这是谁写的代码
所以本地仓库也不让上传代码
git config --global user.email "you@example.com"
git config --global user.name "your name"
生产环境下写自己的工作邮箱
git log就能看到一个版本号
]# git commit -m "aaa" readme.txt
[master (root-commit) d8bc6d6] aaa
1 file changed, 1 insertion(+)
create mode 100644 readme.txt
]# git status
On branch master # 默认是master分支,也可以用init.defaultBranch 来指定分支
nothing to commit, working tree clean
]# git log
commit d8bc6d69aa1b0655ccaa90c6c7d309a0110a980d (HEAD -> master) # 版本号、head指针、分支
Author: xxx <xxx@163.com> # 作者
Date: Sun Oct 13 15:19:55 +0800 # 提交时间
aaa # 提交备注
]# ls .git/
branches COMMIT_EDITMSG config description HEAD hooks index info logs objects refs
]# vim .git/index # 提交了一次之后,可以看到index这个暂存区的索引目录了
2. 暂存区(index/stage),放到本地仓库之前,要告诉git工具,要把哪些文件放到本地仓库里
要先把要放到本地仓库的文件,先放到暂存区,暂存区就是一个索引文件,这个索引文件看不着也摸不到。是一个临时的索引文件
这里面经常用的
git config --.... 和
kubectl config .... 有点像
都是搞这个命令,或者说这个软件的什么配置之类的
]# ls ~ -a
. .bash_history .bash_profile .cshrc myproject .pydistutils.cfg .tcshrc .vimrc
.. .bash_logout .bashrc .gitconfig .pip .ssh .viminfo
]# cat ~/.gitconfig
[user]
email = xxx@163.com
name = xxx
用户的家目录下面有一大堆东西,特别是这些隐藏文件,都是和这个用户有关系的设置,比如.vimrc设置用户的vim编辑器的,.ssh设置用户的远程连接和被连接的情况的,这里的.gitconfig里面就放的是git软件所使用的用户的信息,邮箱和用户名
3. 本地仓库(local repository),wx目录下这个隐藏的.git目录就叫本地仓库
这个.git目录本地仓库,保存所有数据,这里面有提交的所有版本的数据
.git就是本地仓库,每次写完脚本和代码,都要上传到本地仓库
git版本库操作
1. 注册用户信息 git config --global
2. 创建工作区 git init
3. 编写文件 vim readme.txt
4. 把文件放到暂存区 git add
5. 查看工作区状态 git status
6. 把文件放到本地版本库里 git commit -m "" file
7. 查看日志详细信息 git log
查看日志简略 git log --pretty=oneline
查看日志精简 git log --oneline
这个git log 跟kubectl logs .... 也有点像
head是指针
master是分支
生成多个版本:
版本编号自动生成
git add . # 启动的点"." 代表当前目录下所有的新文件
head指针在哪个版本,你看到的就是这个版本对应的文件内容
git的指针,head
head指针是可以在任何分支和版本移动的指针
通过移动指针可以把数据还原的任何版本
git reset --hard xxxx # 移动head指针
可以把指针移动到对应版本号的版本
看到指定版本的信息之后,要把对应的信息拷贝出来,再生成更新的的版本
不能修改以前的版本,否则资源就错乱了
要回到最新的版本,用
git reflog 查看所有的版本,可以从回滚的版本,再跑到新的版本中
查到版本号之后再用
git reset --hard xxx 新版本号,--hard是直接硬搞,会丢弃一些未保存的数据
git reflog 看到的是head指针都怎么移动过
这样的话,代码一路走来,每一个版本都有记录,错误的版本也有记录
git的核心作用:
版本控制
分支: 程序员在写代码时所在的工作组
分支可以让代码并行开发,分支之间隔离,也可以合并
常用分支
master 主
develop 最新开发成果
release 新产品
hotfix 修bug
feature 新功能
创建新的分支的时候,会把master分支的文件拷贝一份放到新的分支里面
这个切换分支的感觉有点像有多个k8s集群,用kubectl config切换一样
[root@GitLab ~]# rpm -ivh --nodeps gitlab-ce-12.4.6-ce.0.el7.x86_64.rpm
其中 # "--nodeps" 是 no dependents 不要 依赖包
4. 远程仓库(remote repository)远程仓库就是另一台机器remote repository
gitlab github gitee