【面试必备!Mac版本】一文打通Git教程!史上最硬核解析!——双非上岸阿里巴巴系列
东北某不知名双非本科,四面成功上岸阿里巴巴,在这里把自己整理的面经分享出来,欢迎大家阅读。
Git是目前最简单、最流行、最优秀的分布式版本控制工具,没有之一。也是面试时最易被广大同学忽略的知识。大到BAT,小到创业公司,几乎所有的企业都以Git作为自己的核心管理工具。 因此,只要从事互联网行业,Git就是必须要会的。
恰个饭——>《阿里巴巴 Java 开发手册》,业界普遍遵循的开发规范
本博客内容持续维护,如有改进之处,还望各位大佬指出,感激不尽!
文章目录
- 第一章 Git概述
- 1.1 何为版本控制
- 1.2 为什么需要版本控制
- 1.3 版本控制工具
- 1.4 Git简史
- 1.5 Git工作机制
- 1.6 Git和代码托管中心
- 第二章 Git安装
- 第三章 Git常用命令
- 3.1 配置基本信息(只需设置一次)
- 3.2 初始化本地库
- 3.3 查看本地库状态
- 3.4 添加暂存区
- 3.5 提交本地库
- 3.6 修改文件
- 3.7 历史版本
- 3.7.1 查看历史版本
- 3.7.2 版本穿梭
- 3.8 其他常用命令
- 3.9 Linux常用命令
- 第四章 Git分支操作
- 4.1 分支概念
- 4.2 分支的好处
- 4.3 分支的操作
- 产生冲突
- 第五章 Git团队协作机制
- 第六章 GitHub操作
- 6.1 创建远程仓库
- 6.2 远程仓库操作
- 6.2.1 创建别名
- 6.2.2 推送本地库到远程库
- 6.2.3 拉取远程库到本地库
- 6.3 跨团队协作
- 第七章 IDEA集成Git
- 7.1 配置Git
- 7.2 初始化 & 添加 & 提交
- 初始化
- 添加
- 提交
- 7.3 切换版本
- 7.4 创建分支
- 7.5 合并分支
- 无冲突合并
- 冲突合并
- 第八章 IDEA集成GitHub
- 8.1 分享项目到GitHub
- 8.2 推送代码到GitHub
- 8.3 拉取代码到本仓库
- 8.4 clone代码
- 8.4 七、八章总结
- 第九章 自建代码托管平台-GitLab
- 储备知识
- git clone 与 git pull的区别
- git clone 与 git pull 相同点
- git clone 与 git pull 不同点
- git clone
- git pull
- 使用场景
- Git|GitHub|Gitee|GitLab区别
- 分盘
- 修改git的端口号
- 解决IDEA集成GitHub失败问题
- 一. 出现这种问题的原因:
- 二. 解决方案:
- Git - IDEA 来回切换分支引起报错
- 指针颜色说明
- idea连接GitHub提示Connection reset
第一章 Git概述
Git是一个免费的、开源的分布式版本控制系统,可以快速高效处理项目
占地小、易学习、性能好、廉价
PS:学习git,linux命令很重要,因为是同一个爸爸
1.1 何为版本控制
版本控制是一种记录文件变化,以便将来查阅特定版本修订情况的系统。
最重要的修改文件修改的历史记录,从而让用户能查看版本,切换版本。
1.2 为什么需要版本控制
个人开发过渡到团队开发,团队间需统一版本,互相协调。
1.3 版本控制工具
集中式版本控制工具
CVS、SVN、VSS等
都有一个中央服务器,保存所有文件的修订版本,所有人都能通过客户端连接到这台服务器,取出最新的文件,或提交更新。
好处是管理员可以掌握每个开发者的权限,并且统一管理,协调进度,维护简单。
坏处是如果中央服务器单点故障,则全部无法工作
分布式版本控制
以Git为例,客户端提取的不是最新版本的文件快照,而是把代码仓库完整的镜像下来(本地库),这样任何一处协同工作用的文件发生故障,事后都可以用其他客户端的本地仓库进行恢复。
解决了集中式版本控制系统的缺陷。
且:服务器断网情况下也能进行开发,每个客户端保存的也都是完整项目(包含历史记录)
1.4 Git简史
1.5 Git工作机制
以上图片为工作区、暂存区、本地库之间的关联,在本地库之上还有一层远程库。如下图所示:
工作区:存放代码的位置
暂存区:把工作区的代码add到暂存区
本地库:暂存区commit到本地库。一旦提交到本地库,就生成了历史版本,无法删除
远程库:本地库push到远程库(全互联网或全局域网都生成了历史版本)
1.6 Git和代码托管中心
代码托管中心是基于网络服务器的远程代码仓库,一般我们简单称为远程库,常见的远程库
局域网常见的代码托管中心:GitLab
互联网常见的代码托管中心:GitHub、Gitee
第二章 Git安装
mac版本:打开终端,输入git,则自动安装
查看git安装目录:which git
Windows版本——>传送门
第三章 Git常用命令
3.1 配置基本信息(只需设置一次)
配置用户名
git config --global user.name “shaonaiyi”解释:作用是区分不同操作者身份。因此不设置无法提交代码。
配置用户邮箱
git config --global user.email “shaonaiyi@163.com”
解释:这个邮箱是虚拟邮箱。配置大小写敏感
git config --global core.ignorecase false
以后想要修改还是使用上面的指令。
3.2 初始化本地库
作用:把这个目录变为git可以管理的仓库
语法:git init
步骤:新建文件夹,在终端中进入,输入命令后,该文件夹内就会生成.git
隐藏文件
3.3 查看本地库状态
作用:查看本地库的分支、提交情况等
语法:git status
示例
1、直接运行git status:
2、现在我们创建一个hello.txt,再次运行git status,得:
显示有一个未被追踪过的文件,也就是有文件未被添加到暂存区
3.4 添加暂存区
接上。
作用:将文件添加到暂存区
语法:git add hello.txt
示例:
将文件从暂存区删除:git rm --cached hello.txt
3.5 提交本地库
接上。
作用:将暂存区的文件提交到本地库,形成历史版本(版本信息)。
语法:git commit -m “日志信息” “文件名”
示例:
3.6 修改文件
接上。
作用:模拟企业开发中的版本迭代
示例:首先修改文件,再次查看本地库状态,发现红色的信息,提示被修改。解决办法是,首先添加到暂存区,再提交本地库
3.7 历史版本
3.7.1 查看历史版本
写法:git reflog:查看历史版本
版本号、指针指向master分支、版本名称为first commit
写法:git log 查看详细日志
3.7.2 版本穿梭
写法:git reset --hard
示例:
原理:通过指针实现
解释:head是头指针,master是分支,first等是某一分支下的版本。
3.8 其他常用命令
查看Git的配置信息
git config --list查看版本
git --verson
查看文件安装位置
which git
3.9 Linux常用命令
进入终端:control + space,输入终端
查看当前目录:pwd
进入根目录:cd
返回上一级:cd …
删除文件:rm 文件名
列出文件夹下所有文件:ls
新建文件夹:mkdir
查看某文件的安装目录:which …
查看文件内容:cat hello.txt
vim:文本编辑器
vim编辑器的三种模式
1、命令模式
2、插入模式
3、末行模式
命令模式:yy复制一行,dd删除一行,p粘贴
底行模式:wq保存并退出,q!不保存退出
第四章 Git分支操作
4.1 分支概念
概念:在版本控制过程中,同时推进多个任务,为每个任务,我们可以创建每个任务的单独分支。使用分支意味着程序员可以把自己的工作从开发主线上分离出来,开发自己分支的时候,不会影响主线分支的运行。
对于初学者而言,分支可以简单理解为副本,其底层是对指针的引用
4.2 分支的好处
同时并行推进多个功能开发,提高开发效率。
各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。
4.3 分支的操作
git branch 分支名:创建分支(基于最新的分支,引申出来的分支)
git branch -v:查看分支
git checkout 分支名:切换分支
git merge 分支名:把指定的分支合并到当前分支上(站在当前分支上,合并想喝合并的分支)
产生冲突
合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。Git无法替我们决定使用哪一个。必须人为决定新代码的内容
合并文件如果出现冲突,需要人为修改代码,然后添加暂存区,提交到本地库
第五章 Git团队协作机制
团队内协作
岳不群在本地库创建华山剑法项目,push到远程库。
令狐冲在远程库中把代码clone下来,优化一下,又push进远程库
跨团队协作
团队1感觉项目写的不行,于是想让大哥帮忙修改一下,于是大哥从团队1的远程库中fork项目,到自己的库中,改完在merge回去
第六章 GitHub操作
6.1 创建远程仓库
6.2 远程仓库操作
6.2.1 创建别名
查看别名:git remote -v
创建别名:git remote add ori https://github.com/Tokyo-z/git-demo.git
原理:指针
6.2.2 推送本地库到远程库
语法:git push 别名or网址 分支
输入github的账号密码即可
6.2.3 拉取远程库到本地库
语法:git pull 别名or网址 存放拉取内容的分支
git pull ori master
6.3 跨团队协作
先把别人的项目fork到我这,再进行操作。
其他操作与团队内协作的操作一致。
第七章 IDEA集成Git
7.1 配置Git
7.2 初始化 & 添加 & 提交
初始化
将普通项目改为Git配置的模式
可以看到已经被改造成了Git格式
添加
此时我们发现文件变红了,因为没有吧文件添加到暂存区。 具体操作如下:
操作完成后,文件变绿
提交
添加到暂存区后,我们commit一下
提交后,文件重新变回正常颜色
7.3 切换版本
只要更改代码,我们发现代码变蓝了,说明这个代码被追踪了。 因此重复操作,add + commit,将提交版本置为second
提交后的分支
又创建了第三个版本:
切换版本:
此时,我们看到头指针指向了第二个版本
7.4 创建分支
查看当前分支 & 切换分支
7.5 合并分支
要将hot-fix分支合并到master上
无冲突合并
首先在热修分支创建新的版本并提交
接下来切换到master,进行如下操作:
合并成功后示意图:
冲突合并
在热修分支 和 master上到同一行同时更改代码,制造冲突,并提交
我们发现,发生了冲突。 此时需要点击merge,手动合并代码
合并成功后图示:
第八章 IDEA集成GitHub
8.1 分享项目到GitHub
GitHub就相当于远程库,分享到GitHub上就相当于分享到远程库
1、在Plugins里下载GitHub插件,下载成功后,在Version Control中显示。
2、设置GitHub账号,如果设置失败,见储备知识
3、将项目分享到GitHub上
8.2 推送代码到GitHub
注意:Push是将本地库代码推送到远程库,如果本地库代码跟远程库代码版本不一致,push的操作是会被拒绝的。
要想Push成功,本地库版本一定要高于远程库版本!
因此,当想要动手修改本地库代码时,要先pull拉取一下远程的代码,将本地代码更新到最新后,再修改、推送!
8.3 拉取代码到本仓库
在GitHub中,将项目编辑,新增代码,
用法同上
8.4 clone代码
把项目从本地删除, 可以从GitHub上clone回来
8.4 七、八章总结
第七章只用到了add + command,因此涉及到的路线是本地代码->暂存区->本地库
第八章用到的是push和pull,因此涉及到的路线是本地代码->远程库
第九章 自建代码托管平台-GitLab
GitLab的安装、下载、配置省略。。。(需要虚拟机)
IDEA集成GitLib
1、下载GitLab插件
2、连接服务器
3、操作(以push为例)
在url里添加上gitLib的链接即可
储备知识
git clone 与 git pull的区别
git clone 与 git pull 相同点
相同点:都是从远程服务器拉取代码到本地
git clone 与 git pull 不同点
git clone
是在本地没有版本库的时候,从远程服务器克隆整个版本库到本地,是一个本地从无到有的过程。
git pull
在本地有版本库的情况下,从远程库获取最新commit 数据(如果有的话),并merge(合并)到本地。
git pull = git fetch + git merge
使用场景
通常情况下,远程操作的第一步,是使用git clone从远程主机克隆一个版本库到本地。
本地修改代码后,每次从本地仓库push到远程仓库之前都要先进行git pull操作,保证push到远程仓库时没有版本冲突。
Git|GitHub|Gitee|GitLab区别
Git:分布式版本控制系统
GitHub:基于Git原理的外国平台
Gitee:基于Git原理的国内平台
GitLab:基于Git原理的局域网平台
分盘
programFiles存放64位,x86存放32位
修改git的端口号
打开gitbash,进入仓库,输入指令: vim .git/config,或者windows下进到仓库文件夹,进入.git 用编辑器打开
修改后保存即可
解决IDEA集成GitHub失败问题
一. 出现这种问题的原因:
按图查看
你会发现你这里缺失了IDEA 的授权tokens
正常如下:
如果有授权,可以删掉,重新按下面步骤授权一次,因为这个秘钥不能二次查看
二. 解决方案:
解决步骤
1.点击加号,选择第二个登录方式
2.核心步骤
稍微等一会,会自动跳转
3.添加IDEA 授权的tokens
4.生成tokens
5.复制令牌授权码
6.回到IDEA 粘贴授权码
7.登陆成功
Git - IDEA 来回切换分支引起报错
当 Git 切换分支的时候,特别是当某一个A分支Module本来是有的,但是切换到B分支后没这个Module了,这时候再切回A分支去,此时该Module会错乱。
解决方案:
1、关闭IDEA,删除**.idea**文件夹即可,重新再加载项目试试
2、配置忽略文件
指针颜色说明
黄色:版本指针
绿色:分支指针
idea连接GitHub提示Connection reset
原因:访问外网太慢,时间限制到后默认无法访问。
打开:
http://github.global.ssl.fastly.net.ipaddress.com/ 进行查询IP地址,把查询到的IP地址,复制到自己的hosts文件中。
hosts 文件位置:
打开文件
将打开查找到的路径ip
将ip配置到host:方法如下显示
在文档最末尾添加:
然后点击保存
退出idea重新进入,发现可以运行了
【面试必备!Mac版本】一文打通Git教程!史上最硬核解析!——双非上岸阿里巴巴系列相关推荐
- 【三万字!】Dubbo、Zookeeper学习笔记!秒杀面试官!——双非上岸阿里巴巴系列
东北某不知名双非本科,四面成功上岸阿里巴巴,在这里把自己整理的笔记分享出来,欢迎大家阅读. 恰个饭--><阿里巴巴 Java 开发手册>,业界普遍遵循的开发规范 本博客内容持续维护, ...
- 一篇文章了解Github和Git教程-AndroidStudio上传Github教程
前言 为了方便保存自己的代码,下班后可以回家继续进行,自己的码农工作,介绍一下Github. 什么是Github呢? 作为一个编程人员,我觉得得了解一下Github吧! 当然,如果你放弃了码农或者技术 ...
- 一文看全!史上以来的59家测序仪公司
本文来源于微信公众号"尹哥聊基因"(ID:yingeliaojiyin),系授权转载. 前言 NGS系列文章包括NGS基础.转录组分析 (Nature重磅综述|关于RNA-seq你 ...
- 翻翻git之---史上最强的图片选择器 GalleryFinal(顺带附下麦麦,当当的近照)
转载请注明出处:王亟亟的大牛之路 技术内容在P2,P1是废话可以跳过 P1:(开胃菜) 最近手头上工作的事差不多告一段落了,可以把更多的精力花在学习上了,还是会继续翻git这部分的文章(搬运工),然后 ...
- 一文打通 Git 任督二脉
Git 一.概述 二.Git的安装 三.常用命令 1.配置命令 2.基本命令 3.git reset 4.分支命令 四.git文件状态 五.忽略文件 六.Git团队协作示意图 七.GitHub基本使用 ...
- Mac版本安装Anaconda及使用教程
一.安装过程 1.下载适用的安装包 下载地址:Anaconda安装包下载 这里下载的是 64-Bit Graphical Installer (653 MB) --64位图形安装程序(653 MB) ...
- 【面试必备】通俗易懂的XGBoost、Transformer、BERT、水波网络原理解析 | 学习小组...
在当今的人工智能时代,相信大部分人都会关注深度学习技术,但请千万不要忽视对传统机器学习技术的理解.实际上,真正去从事AI工作的时候就会发现,对传统机器学习的依赖还是巨大的.如逻辑回归.随机森林.GBD ...
- 【面试必备】通俗易懂的XGBoost、Transformer、BERT、水波网络原理解析
在当今的人工智能时代,相信大部分人都会关注深度学习技术,但请千万不要忽视对传统机器学习技术的理解.实际上,真正去从事AI工作的时候就会发现,对传统机器学习的依赖还是巨大的.如逻辑回归.随机森林.GBD ...
- 教程-mac版本texpad配置中文环境教程
安装步骤 转自知乎 安装 MacTex: 安装 Texpad: 设置Texpad: 选中CJK support (见下图),之后会自动下载.等下载完成后,即可正常显示中文了.注意:在偏好设置里,只是选 ...
最新文章
- java游戏下载ios_java浏览器下载
- Spark2.1.0分布式集群安装
- Android 使用RxJava--基础篇
- 算法----------最长上升子序列(Java 版本)
- Maven发布封装到中央仓库时候报错:no default secret key: No secret key
- WINCE6.0更换桌面壁纸和图标
- 安装swig后,python3版本切换到了2
- mysql 常用配置_mysql 常用配置
- 如何在Photoshop中制作双曝光图像
- 转:链表相交问题 详解
- [Leetcode] Longest Valid Parentheses
- (计算机组成原理)第三章存储系统:本章习题
- 判断一个字符串的字符是不是唯一
- Linux的Sysfs文件系统简要说明
- ng-show和ng-if的区别和使用场景
- 995. Minimum Number of K Consecutive Bit Flips(K 连续位的最小翻转次数)解法(C++ 注释)
- 23 个学习 JavaScript 的地方
- 谁教会老公出轨外面养情人
- 多搜 - 多个网站一起搜 (舆情监控版)
- zookeeper Unreasonable length错误导致无法启动