最新要闻
- 美食博主三亚买3888元海鲜被好心人提醒多花1700:当事人心累
- 热消息:秋裤先别着急脱!“春捂”到底该“捂”哪儿?
- 前沿资讯!2023年安卓之光!小米13 Ultra手机壳曝光:背部造型抢眼
- 餐馆接到网吧10个外卖订单 结果被刷9个差评 店主:下次亲自送餐
- 天天微速讯:门店2299元 GXG男士羊毛大衣0.8折清仓大促:实付199元!
- 世界热资讯!乐堡苏打气泡酒12罐到手19.9元:低糖0脂无负担
- 威马员工在线讨薪:被恶心到了、恶心的事还有更多
- 广州塞车登“热搜”?“甜蜜的烦恼”重回一线城市,中国经济活力加快恢复
- 80、90后泪目 国产暗黑《赵云传重制版》试玩
- 1岁男童误食降糖药成植物人:愿康复顺利
- 环球速看:中央人民广播电台民族节目中心
- 秒睡令人羡慕?医生提醒:可能是种睡眠障碍
- 《流浪地球2》科幻成真?武汉国博用特效“加建”太空电梯
- 《原子之心》种族主义漫画引争议:涉嫌歧视黑人!官方道歉
- 世界速读:我国载人航天将对国际开放 多国航天员希望参与中国空间站
- 每日热讯!驱动拖后腿 Intel显卡被低估:2000元档A770理论可刚RTX 3070
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
【环球新要闻】Git使用
Git
Git是一个分布式版本控制工具,用来管理多人写作的代码。同时也是一个内容管理系统。
Git与SVN的区别:
- Git是分布式的,svn不是。这是最核心的区别
- Git把内容按元数据方式存储,而SVN是按文件:所有的资源控制系统都是把文件的原信息隐藏在一个类似.svn .cvs等的文件夹里
- Git分支和SVN分支的不同:分支在SVN中一点都不特别,其实他就是版本库中的另外一个目录
- Git没有一个全局的版本号,而SVN有
- Git的内容完整性要优于SVN:Git的内容存储使用的是SHA-1哈希算法,这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏
1、Git安装
Windows平台上的安装,到官网https://gitforwindows.org/,下载安装包,一路确认,完成安装。
(资料图片)
安装完成后,右键git bash here,可以使用命令行的git工具(自带SSH客户端)。
Git配置
Git提供了一个叫做git config的工具,专门用来配置或读取相应的工作变量。
这些环境变量,决定了Git在各个环节的具体工作方式和行为。这些变量可以存放在三个不同的地方:
- /etc/gitconfig 文件:系统中对所有用户都普遍使用的配置。若使用
git config --system
选项,读写的就是这个文件D:\smy_software\git\Git\etc\gitconfig
。 - ~/.gitconfig:用户目录下的配置文件只适用于该永固。若使用
git config --global
选项,读写的就是这个文件。C:\Users\10170\.gitconfig
- 当前项目的Git目录中的配置文件(也就是工作目录中的
/.git/config
文件):这里的配置仅仅针对当前项目有效。每一个级别的配置都会覆盖上层的相同配置,所以.git/config里的配置会覆盖/etc/gitconfig中的同名变量。
项目路径/.git/config
文件配置如下:
[core]repositoryformatversion = 0filemode = falsebare = falselogallrefupdates = truesymlinks = falseignorecase = true[remote "origin"]url = http://项目地址.gitfetch = +refs/heads/*:refs/remotes/origin/*[branch "master"]remote = originmerge = refs/heads/master
因为我使用过git config --global 命令配置过用户信息,所以这里使用的是2中的用户信息,这个文件里只记录了仓库的配置信息。
用户目录/.gitconfig配置信息
[user]email = 邮箱name = 用户名[core]autocrlf = false
在 Windows 系统上,Git 会找寻用户主目录下的 .gitconfig 文件。主目录即 $HOME
变量指定的目录,一般都是 C:\Documents and Settings\$USER
。
此外,Git 还会尝试找寻 /etc/gitconfig 文件,只不过看当初 Git 装在什么目录,就以此作为根目录来定位。
配置用户信息
# 配置个人的用户名称和电子邮件地址git config --global user.name "xxx"git config --global user.email xxx@yy.com
如果使用了 --global选项,那么更改的配置文件就是位于用户主目录下的./gitconfig
文件,以后所有的项目都会默认使用这里配置的用户信息。
如果要在某个特定的项目中使用其他名字或者电邮,只要去掉--global
选项重新配置即可,新的设定保存在当前项目的 .git/config
文件里。
适用于工作项目和个人项目分开的场景。例如,在xxx/A目录我使用github账号远程我的github仓库,在xxx/B目录使用gitLab账号远程公司的gitLab仓库。
差异分析工具
经常用在解决合并冲突时使用差异分析工具。可以使用如下命令配置
# 改用vimdiffgit config --global merge.tool vimdiff
Git 可以理解 kdiff3,tkdiff,meld,xxdiff,emerge,vimdiff,gvimdiff,ecmerge,和 opendiff 等合并工具的输出信息。
查看配置信息
检查已有的配置信息,可以使用如下命令
git config --list
注意:在idea中的终端中运行这个命令输出的信息是不完全的,需要在git bash中运行这个才可以看到完整的配置信息。
2、Git工作流程
一般工作流程如下:
- 克隆 Git 资源作为工作目录。
- 在克隆的资源上添加或修改文件。
- 如果其他人修改了,你可以更新资源。
- 在提交前查看修改。
- 提交修改。
- 在修改完成后,如果发现错误,可以撤回提交并再次修改并提交。
如图所示
3、Git原理
基本概念
我们先来理解下 Git 工作区、暂存区和版本库概念:
- 工作区:就是你在电脑里能看到的目录。
- 暂存区:英文叫 stage 或 index。一般存放在 .git目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
- 版本库:工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。
- 图中左侧为工作区,右侧为版本库。在版本库中标记为 "index" 的区域是暂存区(stage/index),标记为 "master" 的是 master 分支所代表的目录树。
- 图中我们可以看出此时 "HEAD" 实际是指向 master 分支的一个"游标"。所以图示的命令中出现 HEAD 的地方可以用 master 来替换。
- 图中的 objects 标识的区域为 Git 的对象库,实际位于 ".git/objects" 目录下,里面包含了创建的各种对象及内容。
- 当对工作区修改(或新增)的文件执行 git add命令时,暂存区的目录树被更新,同时工作区修改(或新增)的文件内容被写入到对象库中的一个新的对象中,而该对象的ID被记录在暂存区的文件索引中。
- 当执行提交操作(git commit)时,暂存区的目录树写到版本库(对象库)中,master 分支会做相应的更新。即 master 指向的目录树就是提交时暂存区的目录树。
- 当执行 git reset HEAD命令时,暂存区的目录树会被重写,被 master 分支指向的目录树所替换,但是工作区不受影响。
- 当执行 git rm --cached 命令时,会直接从暂存区删除文件,工作区则不做出改变。
- 当执行 git checkout .或者 git checkout -- 命令时,会用暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区中的改动。
- 当执行 git checkout HEAD .或者 git checkout HEAD 命令时,会用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区和以及工作区中的文件。这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动。
4、Git基本操作
Git的工作就是创建和保存用户项目的快照及与之后的快照进行对比。
说明:
- workspace:工作区
- staging area:暂存区/缓存区
- local repository:版本库或本地仓库
- remote repository:远程仓库
创建仓库命令
命令 | 说明 |
---|---|
git init | 初始化仓库。 |
git clone | 拷贝一份远程仓库,也就是下载一个项目。 |
一个文件夹成为一个git仓库的标志是,这个文件夹下有一个.git的隐藏文件夹。这个就是版本库,里面还有暂存区。这个文件夹下的其他文件作为被git管理的文件。
提交与修改
Git 的工作就是创建和保存你的项目的快照及与之后的快照进行对比。
下表列出了有关创建与提交你的项目的快照的命令:
命令 | 说明 |
---|---|
git add | 添加文件到暂存区 |
git status | 查看仓库当前的状态,显示有变更的文件。 |
git diff | 比较文件的不同,即暂存区和工作区的差异。 |
git commit | 提交暂存区到本地仓库。 |
git reset | 回退版本。 |
git rm | 将文件从暂存区和工作区中删除。 |
git mv | 移动或重命名工作区文件。 |
提交日志
命令 | 说明 |
---|---|
git log | 查看历史提交记录 |
git blame | 以列表形式查看指定文件的历史修改记录 |
远程操作
命令 | 说明 |
---|---|
git remote | 远程仓库操作 |
git fetch | 从远程获取代码库 |
git pull | 下载远程代码并合并 |
git push | 上传远程代码并合并 |
5、Git分支管理
Git分支实际上是指向更改快照的指针。
当切换到一个分支的时候,Git会用此分支最后一次提交(commit)的快照替换掉工作区的内容。所以多个分支不需要多个目录。
命令 | 说明 |
---|---|
git branch | 查看所有的分支,并且高亮显示当前所在分支 |
git branch branchname | 创建新分支,不切换到新分支。此时新分支指向工作区中的文件 |
git checkout branchname | 切换到branchname分支。 |
git checkout -b branchname | 创建并切换到branchname分支,相当于前两条命令的组合。此时新分支指向工作区中的文件 |
git merge source | 合并分支,将source分支合并到当前所在的分支。在git bash中默认不会删除原分支;在GitLab中默认勾选了Delete Source branch,会自动删除合并的source分支。 |
git branch -d dev | 删除dev分支,注意当前所在分支不能为dev分支,会报错。必须切换到其他分支再执行这个命令 |
git status | 可以用来查看那些因包含合并冲突而处于未合并(unmerged)状态的文件 |
git diff | 显示合并冲突的地方 |
git merge的三种情况
- 快进(无冲突)
- 描述:dev从master分支上创建,dev分支commit了多次后,并且master分支没有执行commit操作。
- 此时,没有发生冲突,可以进行自动merge
- 不会自动commit
- 非快进,修改不同文件(无冲突)
- 描述:dev从master分支上创建,dev分支commit了多次后,master分支也提交了多次。并且两个分支修改的不是一个文件。
- 此时,没有发生冲突,可以进行自动merge
- 合并后的版本,会自动commit一次
- 非快进,修改相同文件(有冲突)
- 描述:dev从master分支上创建,dev分支commit了多次后,master分支也提交了多次。并且两个分支修改的是一个文件。
- 此时,会发生冲突,自动合并失败,需要手动解决冲突。
- 使用命令
git status
可以查看是哪些文件发生了冲突 - 使用命令
git diff
可以查看哪些文件的哪个地方发生冲突。 - 手动打开这些文件,修改文件内容。vim
- 手动提交
git add .
git commit -m "xxx"
6、Git查看提交历史
Git 提交历史一般常用两个命令:
- git log- 查看历史提交记录。
- git blame
- 以列表形式查看指定文件的历史修改记录。
命令 | 说明 |
---|---|
git log | 查看提交记录,第一条是最新的 |
git log --oneline | 查看历史记录的简洁版本 |
git log --graph | 查看历史中什么时候出现了分支、合并。 |
git log --reverse --oneline | 逆向显示所有日志 |
git log --author | 查看指定用户提交的部分,如git log --author=Linus --oneline -5 |
7、Git标签
命令 | 说明 |
---|---|
git tag -a v1.0 | 为最新一次的commit打上标签,-a表示创建一个带注解的标签。不用-a也可以创建标签,但是它不会记录标签是什么时候打的,谁打的,也不会添加标签的注解。 |
git tag | 查看所有的标签 |
git tag -a v0.9 85fc7e7 | 为某个commit追加标签。与上面的区别是一个是为最新的commit打标签,这个是为指定的(可以不是最新的)commit打标签。 |
8、使用远程仓库
通过第三方的(github)或者自建的服务器,实现与其他人共同开发,版本控制。
命令 | 说明 |
---|---|
git remote add [shortname] [url] | 添加一个新的远程库,shortname一般为origin,url是远程仓库的地址。连接完成之后,可以将本地的commit push到远程仓库中。 |
git remote | 查看当前配置有哪些远程仓库 |
git remote -v | 查看当前配置有哪些远程仓库,显示url和方式 |
git fetch | 从远程仓库下载最新分支与数据。该命令执行完后需要手动执行 git merge 远程分支到你所在的分支。 |
git pull <远程主机名> <远程分支名>:<本地分支名> | 相当于git fetch 和 git merge的组合 |
git push origin | 推送当前分支到远程分支 |
git remote rm [别名] | 删除远程仓库 |
参考
- gitLab代码合并取消删除source分支
- git merge命令应用的三种情景
【环球新要闻】Git使用
美食博主三亚买3888元海鲜被好心人提醒多花1700:当事人心累
热消息:秋裤先别着急脱!“春捂”到底该“捂”哪儿?
前沿资讯!2023年安卓之光!小米13 Ultra手机壳曝光:背部造型抢眼
餐馆接到网吧10个外卖订单 结果被刷9个差评 店主:下次亲自送餐
天天微速讯:门店2299元 GXG男士羊毛大衣0.8折清仓大促:实付199元!
世界热资讯!乐堡苏打气泡酒12罐到手19.9元:低糖0脂无负担
威马员工在线讨薪:被恶心到了、恶心的事还有更多
广州塞车登“热搜”?“甜蜜的烦恼”重回一线城市,中国经济活力加快恢复
【Tire树】高效统计字符串
80、90后泪目 国产暗黑《赵云传重制版》试玩
1岁男童误食降糖药成植物人:愿康复顺利
环球速看:中央人民广播电台民族节目中心
Ubuntu安装Zabbix6.0
秒睡令人羡慕?医生提醒:可能是种睡眠障碍
《流浪地球2》科幻成真?武汉国博用特效“加建”太空电梯
今头条!【element UI】在 el-select 与 el-tree 结合组件
环球热文:python教程:模块的搜索路径
Python中模块的四种方式
《原子之心》种族主义漫画引争议:涉嫌歧视黑人!官方道歉
世界速读:我国载人航天将对国际开放 多国航天员希望参与中国空间站
每日热讯!驱动拖后腿 Intel显卡被低估:2000元档A770理论可刚RTX 3070
受贿、泄露内幕信息!湖北原副省长曹广晶被公诉
天天快看点丨下周发售!《卧龙:苍天陨落》新预告发布:PC/主机通吃
最新消息:EQ电动车中国表现欠佳 奔驰CEO:打价格战不是好事
环球热点!101岁老人每天赶2场麻将 医生:身体状态70岁
What's past is prologue
全球新资讯:车商不收特斯拉 新车一个月亏7万:新能源二手车都不受待见 厂商频降价
H5N1禽流感致死事件引世卫关注:事发柬埔寨、9年来首次
环球热点评!下单就送鲜蔬汤 海福盛冻干粥5杯大促:券后仅20.9元!
“真香定律”稳定发挥 迈凯伦全新SUV效果图曝光:预计售价282万
世界今日讯!关于修订《中国高尔夫球协会赛事活动管理办法》的通知
环球微头条丨中越边境民族文化艺术考察研究
每日热点:女子在门缝发现针头 是大妈拿注射器推大量不明液体:整栋楼遭殃 网友气愤
地球中心到底有什么?科学家发现竟是一个超大铁球 跟书里讲得不一样
NET6接口项目基础框架项目
Java 8 Lambda 方法引用 简记
全球看热讯:(数据库系统概论|王珊)第七章数据库设计-第三节:概念结构设计
Blender插件:水滴生成器(Droplet Generator)
环球速递!《分布式技术原理与算法解析》学习笔记Day22
消炎止血、除口臭!中药黄芩牙膏大促:3支不到20块(送牙刷)
【世界聚看点】《博德之门3》Xbox版遭遇技术难题
天天快看点丨激光溶脂和吸脂的区别_激光溶脂和吸脂怎么区分
每人1600元!北京要发消费券了:买手机、PC、无人机等都能用
为博流量 女子与前夫摆拍家暴并直播谎称报警:结果被官方通报
当前快看:吸水好干得快:洁丽雅新疆棉毛巾4.98元发车
【Java】ArrayList线程不安全的坑
世界观察:不点拍照按键也能拍照!荣耀Magic 5全新技术曝光:堪比变魔术
全球观热点:自信满满!萌娃觉得自己掌握了英语的窍门 张口让网友沉默
当前播报:电动车里什么最耗电?13类电器功率排名来了!出乎意料
当前关注:义乌市百货有限责任公司
【新要闻】饰组词语接龙_饰组词语
运算符重载
世界要闻:猛男专属 吉利几何E超吸粉特别版上市:9.98万元
全球热点评!《三体》被改编成剧本杀 三体宇宙索赔300万
热资讯!算法正在谋杀新闻 各种日报带头摆烂 十亿中国网友却为此狂欢
联想小新Pro 14天青蓝来了:13代酷睿 1TB硬盘
天天日报丨国产架构的龙芯CPU可以跑QQ了!底层重写、与x86/Arm肩并肩
当前滚动:全商汇深圳控股集团有限公司_全商汇
世界资讯:Eureka高可用集群服务端和客户端配置
今日精选:NEMU PA 1 实验报告
Spark系列 - (4) Spark任务调度
天天快资讯丨第122篇: JS函数一些基本概念
独居老人为家中热闹没装大门 多车误入院子
每日资讯:RTX 4090显卡都能用 长城850W金牌全模电源504元(每瓦0.6元)
day03-自己实现Mybatis底层机制-02
如何设计高并发项目
天天快资讯丨Android 应用接入 Firebase Crashlytics 进行崩溃分析上报
热议:Java 中 hashCode 和 equals 方法是什么?它们和 == 各有什么区别?
热门:沃尔沃XC90 T8充电版:经过最新升级后仍是首选SUV
全球新消息丨网友用AI生成《黑豹2》电影白人版海报 激怒正义人士
面向对象进阶第二天
环球视点!# 009 - 检验 (2)
热讯:邝飚
天天滚动:长度仅23.5mm:尼康尼克尔Z 26mm f/2.8饼干镜头上架
iPhone更香?调查显示近半数安卓用户考虑换苹果
最后一个武侠杂志 《今古传奇·武侠版》停刊:闭关修炼
今日快看!力压西游记、红楼梦 豆瓣9.8分:《大明王朝1566》封神国产剧
【天天快播报】python-函数
焦点热文:58.抽象数据类型
青海首次实现330千伏同塔双回线路中相导线带电消缺
男子工作期间上厕所摔伤:被判工伤
周杰伦发文谈论AI 称AI取代不了音乐创作的美感
今日快讯:86岁老人鸡骨头卡入支气管16年:部分骨头被气管黏膜包住
带货主播李佳琦进浙江一大学招美女主播:教室爆满 女生尖叫
学生点外卖评3星被商家威胁:不删除差评 让学校把你开除
linux中redis下载安装部署启动
环球视讯!21、现有网络模型的使用以及修改
环球看热讯:(数据库系统概论|王珊)第七章数据库设计-第二节:需求分析
世界速读:周鸿祎:ChatGPT迟早会产生自主意识 为人类带来毁灭危机
我国新一代载人登月飞船模型首次展出:将建造月球科研站
每日热议!委员建议:允许重大节日燃放烟花爆竹 应科学限放
吃透8图1模板,人人可以做架构
免费开源的邮件服务器搭建
天天热门:蚁群算法
每日热闻!Prometheus安装部署(主体)
【世界速看料】保时捷新能源车高架冒烟 司机:开得好好的就着了 差点被烧死
环球讯息:罗技Trophy G驾驶舱发布:兼容所有方向盘、踏板、主机和PC
百事通!网友称5千元买洗地机用2小时就坏掉:售后无门
天天速讯:十铨发布新款PCIe 5.0固态硬盘:顺序读取12000MB/s、配石墨烯散热片