| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 开发工具 -> 手把手的 git 降伏指南——阿龙咸鱼经 -> 正文阅读 |
|
[开发工具]手把手的 git 降伏指南——阿龙咸鱼经 |
目录传统艺能😎小编是双非本科大一菜鸟不赘述,欢迎大佬指点江山(QQ:1319365055) 🎉🎉非科班转码社区诚邀您入驻🎉🎉 🎉🎉🎉倾力打造转码社区微信公众号🎉🎉🎉 感受吧年轻人!🤔因为之前一直用的 TortoiseGit,所以没去接触 Git ,咱就是说用了以后还是俩字:真香,Git 确实好用所以欢喜来写个操作教程就当 随处可闻的 git 究竟有多重要?假如你是一个从茫茫人海脱颖而出的实习生苗子,来公司第一天老板丢给你分大文件叫你把里面代码 down 下来先看看,然而这时你连怎么去整合代码都不知道就无比尴尬了, git 其实已经是程序员自我修养的基础了,学会使用 git 未来进企业也会给前辈和同事减少不少麻烦工作,同事也为自己减负和加分。 git 是啥🤔用一句话概括:git是目前世界上最先进的分布式版本控制系统,没有之一! 它是免费的,开源的分布式版本控制系统,可以高效的处理各种大小项目,他抑易于学习,占地小性能极快,有廉价的本地库。方便的暂存区和多个工作流分支。他的性能优于 Subversion,CVS 等版本控制工具。 版本控制?🤔版本控制是一种记录文件内容变化一遍以便于查看特定历史版本修订情况的系统,他最大特点就是可以修改历史记录方便版本切换。 比如你负责维护一款 APP 的某个功能,而某一天他突然出现一个重大错误需要 hot fix ,这时又正好是用户使用的高峰期,怎么办呢?救星就是我们的 git ,他会从面对用户上的版本做一个 branch 分支,我们对这个分支进行修改,完事儿直接合并回去就行。这样麻烦也解决了又不产生业务损失。这就是神一般的版本控制系统。 git 安装🤔进入官网再根据自己配置进行下载即可们,但是由于官网下载速度过于缓慢,而且我还下载报错: 无法下载,需要某网站授权。 推荐在git下载的某宝镜像网站下下载,最新版本在网页下面,请各取所需: 分布式 vs 集中式🤔为什么是分布式而不是集中式呢?很简单,假如一个项目有多个人来完成,集中式有一个集中管理的服务器,保存所有文件的修订版本,每个成员能看到各自的进度,管理员也轻松掌握每个成员的权限,而且管理一个集中化的系统远比在各个客户端上进行维护要轻松许多。 但是吧如果机器宕掉了或者坏掉了,无法提交更新也无法协同工作,那么就面临着全体干瞪眼儿的尴尬,所以这种架构有一个致命缺点就是他的中央服务器的单点故障。 所以这时以 git 为代表的版本控制工具就来了,他并不是文件快照,而是把代码仓库完整的镜像拷贝下来,每一次文件客户端的文件提取操作都是一次对整个文件仓库的完整备份。他不仅实现了不受断网环境影响的开发,还更加安全。 工作机制🤔憋看咱 git 功能强大,其实底层工作机制很简单。 git 大概分为三个部分,工作区,暂存区和本地库。工作区指的是代码存放的磁盘目录的位置;暂存区是写完代码后,git 去追踪这个代码,其实就是让 git 知道咱有这么个代码,所以需要将工作区代码添加到暂存区;最后提交到本地库就会生成对应的历史版本,一旦生成他就是你抹不去的印记了(远程库)! Git 常用命令🤔因为 git 开发者是林纳斯,也就是 Linux 之父,所以命令也是承袭了 Linux 的指令,Linux我们都很容易上手,但是没接敢说自己精通 Linux 指令的,git 也是同理所以我只列出重点常用的。 命令哪里输入?你只需要戍边右键点开找到 git bash ,打开是像这样一个框框(初始是没有代码的,这时我截的我当前的) 设置用户签名🎉
从咱安装好那一刻开始,只需要设置这一次用户签名就够了,如果没设置将来提交代码时是会报错的,签名的作用是区分不同操作者的身份,用户的签名信息在每一次提交信息中都可以看到。 初始化本地库🎉
我们要让 git 来管理一个目录时,那就必须要让 git 获得该目录的管理权。我以我自己的本地库为例,我在 D 盘创建了一个名为 yunying 的文件夹,我想让当前文件夹成为我的本地库,那我就直接进入该文件夹,右键唤出 git bash ,输入 git init 就会创建出一个 master 分支(默认分支名为 master),分支当前无操作所以 ll 指令查看分支内容为 0。 本地库状态查看🎉
status 即状态,这个命令可查看当前库的状态 添加暂存区🎉要将文件从工作区添加到暂存区就要用 add 命令:
添加完了他会显示两行警告: 这个警告的出现其实就是添加成功了,它是提醒你一下 git 帮你默认转换了一下行末换行符,就是把 Windows 环境下的 CRLF 替换为 Linux 中的 LF。并没有什么实际作用(和某局警告一样) 那么添加完了我们 git status 查看状态他的日志信息就会改变,红码变绿码:
这个所谓的删除实质上是把暂存区的删掉而工作区的不会被连坐。 提交本地库🎉这一步就是将暂存区文件提交到本地库,形成一个历史版本:
这个 -m 的作用是去写跟在他后面的一个日志信息,如果没有 -m 操作,在提交时 git 也会弹出一个提示框叫你添加,不然没法提交。提交成功后就是这样一个样子: 查看日志信息🎉那完事儿了我们咋查看历史版本信息呢?我们可以用 reflog (reference logs,即参考日志)
他俩都可以查看历史版本信息,但是 log 是查看详细版本日志信息,包括用户签名,提交时间以及完整的版本号: 修改文件🎉如果我要对当前在暂存区中的文件进行修改,假如我 vim hello.txt ,在里面增加了几行代码,回来查看当前本地库状态就会变成这样: 这行红字 modified 就证明我们已经对 hello.txt 进行了修改操作,而且这次修改导致了文件不能被追踪到,掉出了暂存区,只需要再来一次 add 和 commit 即可,但是提交后的就是第二次版本信息了。 版本穿梭🎉
既然我们有了历史版本,那么总有一天会像回到曾经那个版本,去对比去品鉴去驻足,就好像咱男人想回到曾经的某个过去
假如有一个 version 版本,有一个 master 分支,那这个 master 分支一定指向 version 这个版本,git 会有一个 head 头指针指向这个分支,整体上 head 指向 master 这个躯干是不会动的,只需调整 master 的走向即可。 分支操作🎉当下一个生产链上的分支结构大概就长这样: git 中关于分支的操作并不是很多,所以不需要我们去劳神费力的记: 分支的正常合并🎉如果我现在有两条分支 master 和 new ,如果我想把 new 分支合并到 master 分支上,就要 checkout 切换分支到 master 上,让 master 站在当前分支的角度进行合并,对 new 分支不会有影响:
这就是合并成功的样子,合并分支的底层原理依然是指针,和切换分支同理。 分支的冲突合并🎉为什么会有冲突合并呢?因为合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改, git 只是一个合并的工具他没办法替我们决定使用哪一个,所以必须进行人为指定。 比如我原始版本里面内容是 123,master 分支下我修改为 123 -4,hot-fix 分支下我修改为 123 +5。我切换到 master 分支,执行 merge hot-fix,这时的日志就会大不一样了:
报错信息: |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/14 14:56:58- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |