超级详细的Git使用教程
wptr33 2025-01-08 17:48 32 浏览
1 介绍
1.1 具备的功能
- 协调修改
- 数据备份
- 版本管理
- 权限控制
- 历史记录
- 分支管理
1.2 版本控制工具
- 集中式版本控制工具
- CVS、SVN、VSS
- 分布式版本控制工具
- Git、Mercurial、Bazaar、Darcs
1.3 Git优势
- 大部分操作在本地完成,不需要联网
- 完整性保证
- 尽可能添加数据而不是删除或修改数据
- 分支操作非常快捷流畅
- 与Linux命令全面兼容
2 Git与GitLab的安装
2.1 Git安装
2.1.1 下载链接
https://git-scm.com/2.2 GitLab安装
2.2.1 下载
# 下载gitlab
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-8.8.5-ce.1.el7.x86_64.rpm
# 各个版本获取
https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/
# 如何查看是el6还是el7?
uname -a 或者 cat /proc/version2.2.2 执行
rpm -ivh gitlab-ce-8.8.5-ce.1.el7.x86_64.rpm2.2.3 修改配置信息
vi /etc/gitlab/gitlab.rb
修改external_url的地址,添加端口号为9090:(external_url 'http://localhost:9090')
external_url 'http://localhost:9090'2.2.4 运行命令
# 启动配置
gitlab-ctl reconfigure
# 如果配置有更新,则执行gitlab-ctl reconfigure进行更新配置
# 启动Gitlab
gitlab-ctl restart
# 访问路径
http://192.168.71.143:9090
# 【注意防火墙的开关】关闭防火墙
systemctl stop firewalld
# 默认用户名为root,密码为第一次设置的密码。2.2.5 问题
# 问题1 提示UTF8的问题
解决方案:
在 ~/.bash_profile添加
export LC_ALL="zh_CN.UTF-8"
export LC_CTYPE="zh_CN.UTF-8"
然后source ~/.bash_profile
# 问题2 提示policycoreutils-python没有这个依赖
yum install -y policycoreutils-python三 Git结构
3.1 工作区
写代码。使用git add就可以把工作区的内容添加到暂存区了。
3.2 暂存区
临时存储。使用git commit 就把暂存区的内容放到本地库了。
3.3 本地库
历史版本。
3.4 Git和代码托管中心
代码托管中心的任务:维护远程库。
- 局域网环境下
- GitLab服务器
- 外网环境下
- GitHub
- 码云
3.5 本地库和远程库
- 团队内部协作
- 跨团队协作
四 Git命令行操作
4.1 本地库初始化
# 命令
cd /Users/liangyafei/IdeaProjects/git_demo
git init
# .git目录中存放的是本地库相关的子目录和文件,不要删除,也不要胡乱地修改。
git add 4.2 设置签名
- 形式
- 用户名:zydgbbs
- Email地址:admin@zydgbbs.com
- 命令
# 项目级别/仓库级别
git config user.name zydgbbs
git config user.email admin@zydgbbs.com
# 查看项目用户信息
cat .git/config
# 系统用户级别
git config --global user.name zydgbbs
git config --global user.email admin@zydgbbs.com
# 查看全局用户信息
cat ~/.gitconfig4.3 添加及状态查看
# 查看状态
git status
# 添加文件到暂存区
git add good.txt
# 从暂存区撤销
git rm --cached good.txt
# 提交文件到本地库
git commit good.txt -m 'upload good.txt'
# 当修改good.txt后,可以使用下面的命令恢复如初
git checkout -- good.txt
# 当修改good.txt后,添加至暂存区,可以使用下面的命令撤销
git reset HEAD good.txt
# 再次提交到本地库
git commit good.txt -m 'update'4.4 版本的前进或后退
# 查看版本历史
git log
# 用漂亮的格式展示
git log --pretty=oneline
git log --oneline
git reflog
#其中的结果:HEAD@{2},2代表移动到当前版本需要2步。# 对版本进行前进或者后退
# 1 基于索引值操作【推荐】,可以前进也可以后退
# 回退到索引为d9e9d6e的版本
git reset --hard d9e9d6e
# 2 使用^符号,只能后退
# 往后退一步
git reset --hard HEAD^
# 往后退三步
git reset --hard HEAD^^^
# 3 使用~符号,只能后退
# 往后退三步也可以这么写
git reset --hard HEAD~3hard、soft、mixed的区别
soft:仅仅移动HEAD指针。
mixed:在本地库移动HEAD指针,重置暂存区。
hard:在本地库移动HEAD指针,重置暂存区,重置工作区。4.5 删除的文件找回
# 1 永久删除的文件找回
rm -rf good.txt
git add good.txt
git commit -m 'delete'
# 回归到前一个有good.txt的版本
git reset --hard c31a14f
# 2 提交到暂存区的文件找回
rm -rf good.txt
git add good.txt
git status
# 下面的命令即可恢复
git reset --hard HEAD4.5 比较文件
# 比较的是工作区和暂存区的区别
git diff good.txt
# 加HEAD比较的是本地库的区别
git diff HEAD good.txt
# 和历史版本进行比较
git diff HEAD^ good.txt4.6 分支操作
# 1 创建分支
git branch hot_fix
# 2 查看分支
git branch -v
# 3 切换分支
git checkout hot_fix
# 4 合并分支
# 主干合并其他分支
git checkout master
git merge hot_fix
# 5 解决冲突
git status
#删除特殊符号,修改文件,保存退出。
git add good.txt
git commit -m 'resolve conflict'
#此时commit一定不能要带文件名。4.7 创建远程库别名
# 查看远程库别名
git remote -v
# 创建别名
git remote add origin https://github.com/zydgbbs/git_demo.git
# GitHub需要设置Deploy keys
# 生成key
ssh-keygen -t rsa -C "admin@zydgbbs.com"
# 然后把下面的内容复制到https://github.com/zydgbbs/git_demo/settings/keys,添加develop key中。
cat ~/.ssh/id_rsa.pub
# 问题解决:https://www.cnblogs.com/wayne-tao/p/15941763.html
git remote set-url origin https://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@github.com/zydgbbs/git_demo.git
# 然后推送到远程库
git push origin master
# 可以为主干改名字
git branch -M main4.8 克隆操作
git clone https://github.com/zydgbbs/git_demo.git
# 克隆的三个效果
1 完整地把远程库下载到本地
2 创建origin远程地址别名
3 初始化本地库5 总结
上面的git命令本人已全部一一验证,大家没事的时候,可以搭建个Git环境,执行下上面的命令,有什么不清楚的地方,欢迎随时留言交流。
【温馨提示】
点赞+收藏文章,关注我并私信回复【面试题解析】,即可100%免费领取楼主的所有面试题资料!
- 上一篇:Git是什么?可以用来做什么?如何使用?
- 下一篇:关于 GIT 你需要了解的一切
相关推荐
- oracle数据导入导出_oracle数据导入导出工具
-
关于oracle的数据导入导出,这个功能的使用场景,一般是换服务环境,把原先的oracle数据导入到另外一台oracle数据库,或者导出备份使用。只不过oracle的导入导出命令不好记忆,稍稍有点复杂...
- 继续学习Python中的while true/break语句
-
上次讲到if语句的用法,大家在微信公众号问了小编很多问题,那么小编在这几种解决一下,1.else和elif是子模块,不能单独使用2.一个if语句中可以包括很多个elif语句,但结尾只能有一个...
- python continue和break的区别_python中break语句和continue语句的区别
-
python中循环语句经常会使用continue和break,那么这2者的区别是?continue是跳出本次循环,进行下一次循环;break是跳出整个循环;例如:...
- 简单学Python——关键字6——break和continue
-
Python退出循环,有break语句和continue语句两种实现方式。break语句和continue语句的区别:break语句作用是终止循环。continue语句作用是跳出本轮循环,继续下一次循...
- 2-1,0基础学Python之 break退出循环、 continue继续循环 多重循
-
用for循环或者while循环时,如果要在循环体内直接退出循环,可以使用break语句。比如计算1至100的整数和,我们用while来实现:sum=0x=1whileTrue...
- Python 中 break 和 continue 傻傻分不清
-
大家好啊,我是大田。...
- python中的流程控制语句:continue、break 和 return使用方法
-
Python中,continue、break和return是控制流程的关键语句,用于在循环或函数中提前退出或跳过某些操作。它们的用途和区别如下:1.continue(跳过当前循环的剩余部分,进...
- L017:continue和break - 教程文案
-
continue和break在Python中,continue和break是用于控制循环(如for和while)执行流程的关键字,它们的作用如下:1.continue:跳过当前迭代,...
- 作为前端开发者,你都经历过怎样的面试?
-
已经裸辞1个月了,最近开始投简历找工作,遇到各种各样的面试,今天分享一下。其实在职的时候也做过面试官,面试官时,感觉自己问的问题很难区分候选人的能力,最好的办法就是看看候选人的github上的代码仓库...
- 面试被问 const 是否不可变?这样回答才显功底
-
作为前端开发者,我在学习ES6特性时,总被const的"善变"搞得一头雾水——为什么用const声明的数组还能push元素?为什么基本类型赋值就会报错?直到翻遍MDN文档、对着内存图反...
- 2023金九银十必看前端面试题!2w字精品!
-
导文2023金九银十必看前端面试题!金九银十黄金期来了想要跳槽的小伙伴快来看啊CSS1.请解释CSS的盒模型是什么,并描述其组成部分。...
- 前端面试总结_前端面试题整理
-
记得当时大二的时候,看到实验室的学长学姐忙于各种春招,有些收获了大厂offer,有些还在苦苦面试,其实那时候的心里还蛮忐忑的,不知道自己大三的时候会是什么样的一个水平,所以从19年的寒假放完,大二下学...
- 由浅入深,66条JavaScript面试知识点(七)
-
作者:JakeZhang转发链接:https://juejin.im/post/5ef8377f6fb9a07e693a6061目录...
- 2024前端面试真题之—VUE篇_前端面试题vue2020及答案
-
添加图片注释,不超过140字(可选)...
- 今年最常见的前端面试题,你会做几道?
-
在面试或招聘前端开发人员时,期望、现实和需求之间总是存在着巨大差距。面试其实是一个交流想法的地方,挑战人们的思考方式,并客观地分析给定的问题。可以通过面试了解人们如何做出决策,了解一个人对技术和解决问...
- 一周热门
- 最近发表
-
- oracle数据导入导出_oracle数据导入导出工具
- 继续学习Python中的while true/break语句
- python continue和break的区别_python中break语句和continue语句的区别
- 简单学Python——关键字6——break和continue
- 2-1,0基础学Python之 break退出循环、 continue继续循环 多重循
- Python 中 break 和 continue 傻傻分不清
- python中的流程控制语句:continue、break 和 return使用方法
- L017:continue和break - 教程文案
- 作为前端开发者,你都经历过怎样的面试?
- 面试被问 const 是否不可变?这样回答才显功底
- 标签列表
-
- git pull (33)
- git fetch (35)
- mysql insert (35)
- mysql distinct (37)
- concat_ws (36)
- java continue (36)
- jenkins官网 (37)
- mysql 子查询 (37)
- python元组 (33)
- mybatis 分页 (35)
- vba split (37)
- redis watch (34)
- python list sort (37)
- nvarchar2 (34)
- mysql not null (36)
- hmset (35)
- python telnet (35)
- python readlines() 方法 (36)
- munmap (35)
- docker network create (35)
- redis 集合 (37)
- python sftp (37)
- setpriority (34)
- c语言 switch (34)
- git commit (34)
