本站以分享各种运维经验和运维所需要的技能为主
《python零基础入门》:python零基础入门学习
《python运维脚本》: python运维脚本实践
《shell》:shell学习
《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战
《k8》从问题中去学习k8s
《docker学习》暂未更新
《ceph学习》ceph日常问题解决分享
《日志收集》ELK+各种中间件
《运维日常》运维日常
《linux》运维面试100问
《DBA》db的介绍使用(mysql、redis、mongodb...)
一、git分支
1.什么是分支
`分支即是平行空间,假设你在为某个手机系统研发拍照功能,代码已经完成了80%,但如果将这不完整的代码直接提交到git仓库中, 又有可能影响到其他人的工作,此时我们便可以在该软件的项目之上创建一个名叫”拍照功 能”的分支,这种分支只会属于你自己, 而其他人看不到,等代码编写完成后再与原来的项目主分支合并下即可,这样即能保证代码不丢失,又不影响其他人的工作。
2.分支的操作
1)查看 当前分支
`一般在实际的项目开发中,我们要尽量保证master分支是非常稳定的,仅用于发布新版本,平时不要随便直接修改里面的数据文件, 而工作的时候则可以新建不同的工作分支,等到工作完成后在合并到master分支上面,所以团队的合作分支看起来会像上面图那样。` [root@git git_data]# git log --oneline --decorate 3044a5a (HEAD, master) 错误的提交 #HEAD表示指针,master表示主分支,默认分支指向你最后一次的提交 HEAD头、指针 43f49f3 modified 3 90f573f rename 3 too 5d61056 rename 3.txt a4566ae add new file 3
2)查看所有分支
[root@git git_data]# git branch * master # * 表示当前所在的分支
3)创建分支
[root@git git_data]# git branch test # 新建test分支 [root@git git_data]# git branch * master test [root@git git_data]# git branch dev [root@git git_data]# git branch dev * master test
4)切换分支
[root@git git_data]# git checkout test # 切换至test分支 Switched to branch 'test' [root@git git_data]# git branch # 查看分支处于test中 dev master * test [root@git git_data]# git checkout dev Switched to branch 'dev' [root@git git_data]# git branch * dev master test #如果当前分支有未提交的内容,不允许切换分支 [root@git git_data]# git checkout test error: Your local changes to the following files would be overwritten by checkout: master Please, commit your changes or stash them before you can switch branches. Aborting
5)使用分支
#1.主分支创建文件并提交到本地仓库 [root@git git_data]# touch master [root@git git_data]# git add master [root@git git_data]# git commit -m "测试主分支提交代码" #2.切换到dev分支,查看工作区域,没有主分支创建的文件 [root@git git_data]# git checkout dev [root@git git_data]# git branch * dev master test [root@git git_data]# ll -rw-r--r-- 1 root root 4 Sep 17 17:40 3 #3.普通分支创建文件并提交到本地仓库 [root@git git_data]# touch dev [root@git git_data]# ll total 4 -rw-r--r-- 1 root root 4 Sep 17 17:40 3 -rw-r--r-- 1 root root 0 Sep 21 22:52 dev [root@git git_data]# git add dev [root@git git_data]# git commit -m "测试dev分支提交代码" #4.切换到主分支查看 [root@git git_data]# git checkout master Switched to branch 'master' [root@git git_data]# ll total 4 -rw-r--r-- 1 root root 4 Sep 17 17:40 3 -rw-r--r-- 1 root root 0 Sep 21 22:53 master
6)合并分支
#切换到主分支 [root@git git_data]# git branch dev * master test #合并dev分支的代码 [root@git git_data]# git merge dev #查看内容(主分支中多了dev分支中的内容) [root@git git_data]# ll total 8 -rw-r--r-- 1 root root 4 Sep 17 17:40 3 -rw-r--r-- 1 root root 0 Sep 21 22:58 dev -rw-r--r-- 1 root root 0 Sep 21 22:58 master #切换回dev分支,修改代码内容 [root@git git_data]# git checkout dev [root@git git_data]# echo dev > dev #再次切换回主分支,代码自动更新 [root@git git_data]# git checkout master [root@git git_data]# ll total 8 -rw-r--r-- 1 root root 4 Sep 17 17:40 3 -rw-r--r-- 1 root root 4 Sep 21 22:58 dev -rw-r--r-- 1 root root 0 Sep 21 22:58 master #查看git提交日志 [root@git git_data]# git log --oneline --decorate 131f703 (HEAD, master) Merge branch 'dev' 4566cb6 (dev) 测试dev分支提交代码 525099c 测试主分支提交代码 3044a5a (test) 错误的提交 #test没有任何操作,所以停留在最后操作的时间点 43f49f3 modified 3 90f573f rename 3 too 5d61056 rename 3.txt a4566ae add new file 3
7)合并冲突
#在主分支创建一个文件并提交到本地仓库 [root@git git_data]# git branch * master test [root@git git_data]# echo master > master [root@git git_data]# git add . [root@git git_data]# git commit -m '删除开发使用的分支及数据' #切换到普通分支,创建一个与主分支相同名字的文件 [root@git git_data]# git checkout test [root@git git_data]# echo 1111 > master #提交普通分支的文件到本地仓库 [root@git git_data]# git add . [root@git git_data]# git commit -m "在test分支创建一个与主分支一样的文件" #回到主分支进行分支合并 [root@git git_data]# git checkout master [root@git git_data]# ll total 8 -rw-r--r-- 1 root root 4 Sep 17 17:40 3 -rw-r--r-- 1 root root 7 Sep 21 23:11 master [root@git git_data]# git merge test Auto-merging master CONFLICT (add/add): Merge conflict in master Automatic merge failed; fix conflicts and then commit the result. #编辑冲突的文件,删除没有用的内容,保留需要代码 [root@git git_data]# vim master [root@git git_data]# git add . [root@git git_data]# git commit -m "解决分支合并冲突" [master 6f9367c] 解决分支合并冲突 #解决分支合并,如果有修改内容需要再次合并
8)删除分支
# 当分支已经和主分支合并,那可以对分支进行删除处理 [root@git git_data]# git branch -d dev Deleted branch dev (was 4566cb6). [root@git git_data]# git branch * master test
二、git标签
Git 可以给仓库历史中的某一个提交打上标签,以示重要。 比较有代表性的是人们会使用这个功能来标记发布结点(v1.0 、v2.0等等)。 当需要进行回滚操作可直接使用标签名进行回滚,便于记忆,无需使用id。
1.打标签
1)查看提交
[root@git git_data]# git log --oneline --decorate 6f9367c (HEAD, master) 解决分支合并冲突 a2993b3 在test分支创建一个与主分支一样的文件 70c9ada 删除开发使用的分支及数据 131f703 Merge branch 'dev' 4566cb6 测试dev分支提交代码 525099c 测试主分支提交代码 3044a5a 错误的提交 43f49f3 modified 3 90f573f rename 3 too 5d61056 rename 3.txt a4566ae add new file 3
2)打标签
[root@git git_data]# git tag -a 2.0 -m "解决分支合并冲突以后的标签" -a #指定标签的名字 -m #给标签加注释,也就是指定说明文字 #当没有指定标签打在那一次更新上,默认将标签打在最近一次提交的上面 [root@git git_data]# git log --oneline --decorate 6f9367c (HEAD, tag: 2.0, master) 解决分支合并冲突 a2993b3 在test分支创建一个与主分支一样的文件 70c9ada 删除开发使用的分支及数据 131f703 Merge branch 'dev' 4566cb6 测试dev分支提交代码 525099c 测试主分支提交代码 3044a5a 错误的提交 43f49f3 modified 3 90f573f rename 3 too 5d61056 rename 3.txt a4566ae add new file 3
3)给指定提交打标签
[root@git git_data]# git tag -a v1.0 4566cb6 -m "测试给指定提交打标签" [root@git git_data]# git tag 2.0 v1.0 [root@git git_data]# git log --oneline --decorate 6f9367c (HEAD, tag: 2.0, master) 解决分支合并冲突 a2993b3 在test分支创建一个与主分支一样的文件 70c9ada 删除开发使用的分支及数据 131f703 Merge branch 'dev' 4566cb6 (tag: v1.0) 测试dev分支提交代码 525099c 测试主分支提交代码 3044a5a 错误的提交 43f49f3 modified 3 90f573f rename 3 too 5d61056 rename 3.txt a4566ae add new file 3
2.查看标签
[root@git git_data]# git tag 2.0 [root@git git_data]# git show v1.0 # 查看v1.0的信息 git show 加标签查看
3.根据标签回滚
#使用提交的ID进行回滚 [root@git git_data]# git reset --hard 3044a5a HEAD is now at 3044a5a 错误的提交 [root@git git_data]# git log --oneline --decorate 3044a5a (HEAD, master) 错误的提交 43f49f3 modified 3 90f573f rename 3 too 5d61056 rename 3.txt a4566ae add new file 3 [root@git git_data]# ll total 4 -rw-r--r-- 1 root root 4 Sep 17 17:40 3 #使用标签进行回滚 [root@git git_data]# git log --oneline --decorate 3044a5a (HEAD, master) 错误的提交 43f49f3 modified 3 90f573f rename 3 too 5d61056 rename 3.txt a4566ae add new file 3 [root@git git_data]# git reflog #(可对回滚标签查看) [root@git git_data]# git reset --hard v1.0 HEAD is now at 4566cb6 测试dev分支提交代码 [root@git git_data]# git log --oneline --decorate 4566cb6 (HEAD, tag: v1.0, master) 测试dev分支提交代码 3044a5a 错误的提交 43f49f3 modified 3 90f573f rename 3 too 5d61056 rename 3.txt a4566ae add new file 3 [root@git git_data]# git reset --hard 2.0 [root@git git_data]# git log --oneline --decorate 6f9367c (HEAD, tag: 2.0, master) 解决分支合并冲突 a2993b3 在test分支创建一个与主分支一样的文件 70c9ada 删除开发使用的分支及数据 131f703 Merge branch 'dev' 4566cb6 (tag: v1.0) 测试dev分支提交代码 525099c 测试主分支提交代码 3044a5a 错误的提交 43f49f3 modified 3 90f573f rename 3 too 5d61056 rename 3.txt a4566ae add new file 3
4.删除标签
#删除标签 [root@git git_data]# git tag -d 2.0 Deleted tag '2.0' (was ed07882) [root@git git_data]# git tag v1.0 [root@git git_data]# git log --oneline --decorate 6f9367c (HEAD, master) 解决分支合并冲突 a2993b3 在test分支创建一个与主分支一样的文件 70c9ada 删除开发使用的分支及数据 131f703 Merge branch 'dev' 4566cb6 (tag: v1.0) 测试dev分支提交代码 525099c 测试主分支提交代码 3044a5a 错误的提交 43f49f3 modified 3 90f573f rename 3 too 5d61056 rename 3.txt a4566ae add new file 3