【面试必备!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重新進入,發現可以運行了
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
以上是生活随笔為你收集整理的【面试必备!Mac版本】一文打通Git教程!史上最硬核解析!——双非上岸阿里巴巴系列的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 通俗易懂!navicate如何导入MyS
- 下一篇: 最最最最终极办法!解决Idea乱码问题