Git学习笔记【尚硅谷】
目錄
第1章 Git 概述
1.1 何為版本控制
?1.2 為什么需要版本控制
?1.3 版本控制工具
集中式版本控制工具:CVS、SVN(Subversion)、VSS……
?分布式版本控制工具:Git、Mercurial、Bazaar、Darcs……
?1.4 Git 簡史
?1.5 Git 工作機制
?1.6 Git 和代碼托管中心
?第2章 Git 安裝
第 3 章 Git 常用命令
?3.1 設置用戶簽名
1)基本語法:
2)案例實操
3.2 初始化本地庫:git init
1)基本語法:git init
2)案例實操
?編輯
3.3 查看本地庫狀態:git status/cat 文件名【查看的是工作區的文件】
1)基本語法:git status
2)案例實操
????????3.3.1 首次查看(工作區沒有任何文件)
????????3.3.2 新增文件(vim hello.txt)
????????3.3.3 再次查看(檢測到未追蹤的文件)
3.4 添加暫存區:git add 文件名
3.4.1 將工作區的文件添加到暫存區
3.4.2 查看狀態(檢測到暫存區有新文件)
?3.4.3 刪除暫存區的文件(工作區還在):git rm --cached 文件名
?編輯
?3.4.4 查看工作區的文件:ll
3.5 提交本地庫:git commit -m "日志信息(版本提交信息)" 文件名
3.5.1 將暫存區的文件提交到本地庫
3.5.2 查看狀態(沒有文件需要提交)
?編輯
3.5.3 查看引用日記信息:git reflog
?3.5.3 查看日記詳細信息:git log
3.6 修改文件(hello.txt)
3.6.1 查看狀態(檢測到工作區有文件被修改)
3.6.2 將修改(vim 文件名)的文件再次添加暫存區
?編輯
3.6.3 查看狀態(工作區的修改添加到了暫存區)
?3.6.4 提交到本地庫
3.7 歷史版本
3.7.1 查看歷史版本:git reflog/git log
3.7.2 版本穿梭:git reset --hard 精簡版本號
第 4 章 Git 分支操作
?編輯
?4.1 什么是分支
?4.2 分支的好處
4.3 分支的操作
?4.3.1 查看分支:git branch -v
4.3.2 創建分支:git branch 分支名
4.3.3 修改分支(再新增的分支上進行修改)
4.3.4 切換分支:git checkout 分支名
4.3.5 合并分支(正常合并)【把指定的分支合并到當前分支上】:git merge 分支名
4.3.6 產生沖突(沖突合并)
4.3.7 解決沖突
4.4 創建分支和切換分支圖解
第 5 章 Git 團隊協作機制
5.1 團隊內協作
?5.2 跨團隊協作
?編輯第 6 章 GitHub/Gitee?操作
6.1 創建遠程倉庫
?6.2 遠程倉庫操作
?6.2.1 創建遠程倉庫別名:git remote add 別名 遠程地址
6.2.2 推送本地分支到遠程倉庫: git push 別名 分支
6.2.3 克隆遠程倉庫到本地: git clone 遠程地址
6.2.4 邀請加入團隊
?編輯
?編輯
6.2.5 拉取(原來有的,是要獲取有進行修改的文件)遠程庫內容:git pull 遠程庫地址別名 遠程分支名
6.3 跨團隊協作
6.4 SSH 免密登錄
第 7 章 IDEA 集成 Git
7.1 配置 Git 忽略文件
1)Eclipse 特定文件
2)IDEA 特定文件
?編輯
3)Maven 工程的 target 目錄
7.2 定位 Git 程序
?編輯
7.3 初始化本地庫
?編輯
7.4 添加到暫存區
7.5 提交到本地庫
?編輯
7.6 切換版本
7.7 創建分支
7.8 切換分支
7.9 合并分支
7.10 解決沖突
第 8 章 IDEA 集成 GitHub
8.1 設置 GitHub 賬號
8.2 分享工程到 GitHub
8.3 push 推送本地庫到遠程庫--【push之前先pull(如果本地庫的代碼比遠程的代碼低(或者相同),則push失敗)】
8.4 pull 拉取遠程庫到本地庫
8.5 clone 克隆遠程庫到本地
第 9 章 國內代碼托管中心-碼云
9.1 簡介
9.2 碼云帳號注冊和登錄
?9.3 碼云創建遠程庫
?9.4 IDEA 集成碼云
9.4.1 IDEA 安裝碼云插件
9.4.2 IDEA 連接碼云
9.5 碼云復制 GitHub 項目
第 10 章 自建代碼托管平臺-GitLab【跳過】
10.1 GitLab 簡介
?編輯
?10.2 GitLab 官網地址
10.3 GitLab 安裝
10.3.1 服務器準備
?10.3.2 安裝包準備
?10.3.3 編寫安裝腳本
第1章 Git 概述
Git 是一個免費的、開源的分布式版本控制系統,可以快速高效地處理從小型到大型的各種 項目。
1.1 何為版本控制
版本控制是一種記錄文件內容變化,以便將來查閱特定版本修訂情況的系統。
?1.2 為什么需要版本控制
?1.3 版本控制工具
集中式版本控制工具:CVS、SVN(Subversion)、VSS……
集中化的版本控制系統諸如 CVS、SVN 等,都有一個單一的集中管理的服務器,保存 所有文件的修訂版本,而協同工作的人們都通過客戶端連到這臺服務器,取出最新的文件或 者提交更新。多年以來,這已成為版本控制系統的標準做法。
如果服務器宕 機一小時,那么在這一小時內,誰都無法提交更新,也就無法協同工作
?分布式版本控制工具:Git、Mercurial、Bazaar、Darcs……
像 Git 這種分布式版本控制工具,客戶端提取的不是最新版本的文件快照,而是把代碼 倉庫完整地鏡像下來(本地庫)。這樣任何一處協同工作用的文件發生故障,事后都可以用 其他客戶端的本地倉庫進行恢復。因為每個客戶端的每一次文件提取操作,實際上都是一次 對整個文件倉庫的完整備份。
?1.4 Git 簡史
?1.5 Git 工作機制
?1.6 Git 和代碼托管中心
代碼托管中心是基于網絡服務器的遠程代碼倉庫,一般我們簡單稱為遠程庫。
?第2章 Git 安裝
Git的安裝_m0_63077733的博客-CSDN博客
第 3 章 Git 常用命令
?3.1 設置用戶簽名
1)基本語法:
git config --global user.name 用戶名
git config --global user.email 郵箱
2)案例實操
說明: 簽名的作用是區分不同操作者身份。用戶的簽名信息在每一個版本的提交信息中能夠看 到,以此確認本次提交是誰做的。Git 首次安裝必須設置一下用戶簽名,否則無法提交代碼。
※注意:這里設置用戶簽名和將來登錄 GitHub(或其他代碼托管中心)的賬號沒有任 何關系。
3.2 初始化本地庫:git init
1)基本語法:git init
2)案例實操
3.3 查看本地庫狀態:git status/cat 文件名【查看的是工作區的文件】
1)基本語法:git status
2)案例實操
????????3.3.1 首次查看(工作區沒有任何文件)
????????3.3.2 新增文件(vim hello.txt)
????????3.3.3 再次查看(檢測到未追蹤的文件)
3.4 添加暫存區:git add 文件名
3.4.1 將工作區的文件添加到暫存區
????????1)基本語法:git add 文件名
????????2)案例實操
3.4.2 查看狀態(檢測到暫存區有新文件)
?3.4.3 刪除暫存區的文件(工作區還在):git rm --cached 文件名
?3.4.4 查看工作區的文件:ll
3.5 提交本地庫:git commit -m "日志信息(版本提交信息)" 文件名
3.5.1 將暫存區的文件提交到本地庫
????????1)基本語法:git commit -m "日志信息" 文件名
????????2)案例實操
3.5.2 查看狀態(沒有文件需要提交)
3.5.3 查看引用日記信息:git reflog
?3.5.3 查看日記詳細信息:git log
3.6 修改文件(hello.txt)
3.6.1 查看狀態(檢測到工作區有文件被修改)
3.6.2 將修改(vim 文件名)的文件再次添加暫存區
3.6.3 查看狀態(工作區的修改添加到了暫存區)
?
?3.6.4 提交到本地庫
3.7 歷史版本
3.7.1 查看歷史版本:git reflog/git log
????????1)基本語法
git reflog 查看版本信息
git log 查看版本詳細信息
????????2)案例實操
?
3.7.2 版本穿梭:git reset --hard 精簡版本號
????????1)基本語法:git reset --hard 版本號
????????2)案例實操
?
?
Git 切換版本,底層其實是移動的 HEAD 指針,具體原理如下圖所示。
第 4 章 Git 分支操作
?4.1 什么是分支
在版本控制過程中,同時推進多個任務,為每個任務,我們就可以創建每個任務的單獨 分支。使用分支意味著程序員可以把自己的工作從開發主線上分離開來,開發自己分支的時 候,不會影響主線分支的運行。對于初學者而言,分支可以簡單理解為副本,一個分支就是 一個單獨的副本。(分支底層其實也是指針的引用)
?4.2 分支的好處
同時并行推進多個功能開發,提高開發效率。
各個分支在開發過程中,如果某一個分支開發失敗,不會對其他分支有任何影響。失敗 的分支刪除重新開始即可。
4.3 分支的操作
?4.3.1 查看分支:git branch -v
????????1)基本語法 git branch -v
????????2)案例實操
小林@LAPTOP-BD3E8C7B MINGW64 /d/JavaScript/git/Git-Space/git-demo (master) $ git branch -v * master 0577391 first commit4.3.2 創建分支:git branch 分支名
????????1)基本語法 git branch 分支名
????????2)案例實操
小林@LAPTOP-BD3E8C7B MINGW64 /d/JavaScript/git/Git-Space/git-demo (master) $ git branch hot-fix小林@LAPTOP-BD3E8C7B MINGW64 /d/JavaScript/git/Git-Space/git-demo (master) $ git branch -vhot-fix 0577391 first commit * master 0577391 first commit4.3.3 修改分支(再新增的分支上進行修改)
?
?
?
小林@LAPTOP-BD3E8C7B MINGW64 /d/JavaScript/git/Git-Space/git-demo (hot-fix) $ vim hello.txt小林@LAPTOP-BD3E8C7B MINGW64 /d/JavaScript/git/Git-Space/git-demo (hot-fix) $ git status On branch hot-fix Changes not staged for commit:(use "git add <file>..." to update what will be committed)(use "git restore <file>..." to discard changes in working directory)modified: hello.txtno changes added to commit (use "git add" and/or "git commit -a")小林@LAPTOP-BD3E8C7B MINGW64 /d/JavaScript/git/Git-Space/git-demo (hot-fix) $ git add hello.txt小林@LAPTOP-BD3E8C7B MINGW64 /d/JavaScript/git/Git-Space/git-demo (hot-fix) $ git status On branch hot-fix Changes to be committed:(use "git restore --staged <file>..." to unstage)modified: hello.txt小林@LAPTOP-BD3E8C7B MINGW64 /d/JavaScript/git/Git-Space/git-demo (hot-fix) $ git commit -m"hot-fix first commit" hello.txt [hot-fix 0301ee9] hot-fix first commit1 file changed, 2 insertions(+)小林@LAPTOP-BD3E8C7B MINGW64 /d/JavaScript/git/Git-Space/git-demo (hot-fix) $ git status On branch hot-fix nothing to commit, working tree clean4.3.4 切換分支:git checkout 分支名
1)基本語法 git checkout 分支名
2)案例實操
小林@LAPTOP-BD3E8C7B MINGW64 /d/JavaScript/git/Git-Space/git-demo (master) $ git checkout hot-fix Switched to branch 'hot-fix'小林@LAPTOP-BD3E8C7B MINGW64 /d/JavaScript/git/Git-Space/git-demo (hot-fix) $ git branch -v * hot-fix 0577391 first commitmaster 0577391 first commit4.3.5 合并分支(正常合并)【把指定的分支合并到當前分支上】:git merge 分支名
1)基本語法 git merge 分支名
2)案例實操
在 master 分支上合并 hot-fix 分支【把hot-fix分支合并到master上】:hot-fix覆蓋了master
小林@LAPTOP-BD3E8C7B MINGW64 /d/JavaScript/git/Git-Space/git-demo (hot-fix) $ git checkout master Switched to branch 'master'小林@LAPTOP-BD3E8C7B MINGW64 /d/JavaScript/git/Git-Space/git-demo (master) $ git merge hot-fix Updating 0577391..0301ee9 Fast-forwardhello.txt | 2 ++1 file changed, 2 insertions(+)小林@LAPTOP-BD3E8C7B MINGW64 /d/JavaScript/git/Git-Space/git-demo (master) $ cat hello.txt hello,xiaolin! hello,xiaolin! hello,xiaolin! hello,xiaolin! hello,xiaolin! hello,xiaolin! hello,xiaolin! hello,xiaolin! hello,xiaolin! hello,xiaolin! hello,xiaolin! 33333 444444.3.6 產生沖突(沖突合并)
沖突產生的表現:后面狀態為 MERGING
對master分支進行修改
對hot-fix分支進行修改
?
沖突產生的原因:
合并分支時,兩個分支在同一個文件的同一個位置有兩套完全不同的修改。Git 無法替 我們決定使用哪一個。必須人為決定新代碼內容。
?產生沖突
4.3.7 解決沖突
1)編輯有沖突的文件,刪除特殊符號,決定要使用的內容
特殊符號:
<<<<<<< HEAD
【當前分支的代碼】
======= ========
?合并過來的代碼?
?>>>>>> hot-fix
?
2)添加到暫存區
3)執行提交(注意:此時使用 git commit 命令時不能帶文件名,并且修改后只有master被修改 hot-fix沒有變)
4.4 創建分支和切換分支圖解
?master、hot-fix 其實都是指向具體版本記錄的指針。當前所在的分支,其實是由 HEAD 決定的。所以創建分支的本質就是多創建一個指針。
HEAD 如果指向 master,那么我們現在就在 master 分支上。
HEAD 如果執行 hotfix,那么我們現在就在 hotfix 分支上。
所以切換分支的本質就是移動 HEAD 指針
第 5 章 Git 團隊協作機制
5.1 團隊內協作
?5.2 跨團隊協作
第 6 章 GitHub/Gitee?操作
?GitHub 網址:https://github.com/
6.1 創建遠程倉庫
?6.2 遠程倉庫操作
?6.2.1 創建遠程倉庫別名:git remote add 別名 遠程地址
1)基本語法
git remote -v 查看當前所有遠程地址別名
git remote add 別名 遠程地址
2)案例實操
小林@LAPTOP-BD3E8C7B MINGW64 /d/JavaScript/git/Git-Space/git-demo (hot-fix) $ git remote -v小林@LAPTOP-BD3E8C7B MINGW64 /d/JavaScript/git/Git-Space/git-demo (hot-fix) $ git remote add git-demo https://github.com/Lin09-11/git-demo.git小林@LAPTOP-BD3E8C7B MINGW64 /d/JavaScript/git/Git-Space/git-demo (hot-fix) $ git remote -v git-demo https://github.com/Lin09-11/git-demo.git (fetch) git-demo https://github.com/Lin09-11/git-demo.git (push)6.2.2 推送本地分支到遠程倉庫: git push 別名 分支
1)基本語法 git push 別名 分支
2)案例實操
6.2.3 克隆遠程倉庫到本地: git clone 遠程地址
1)基本語法 git clone 遠程地址
2)案例實操
小結:clone 會做如下操作。1、拉取代碼。2、初始化本地倉庫。3、創建別名
克隆:本地完全沒有文件得到所有的文件
拉取:本地已經有文件了,需要更新最新的
6.2.4 邀請加入團隊
1)選擇邀請合作者
2)填入想要合作的人
3 ) 復 制 地 址 并 通 過 微 信 釘 釘 等 方 式 發 送 給 該 用 戶 , 復 制 內 容 如 下 :
4)在 atguigulinghuchong 這個賬號中的地址欄復制收到邀請的鏈接,點擊接受邀請
5)成功之后可以在 atguigulinghuchong 這個賬號上看到 git-Test 的遠程倉庫。
6)令狐沖可以修改內容并 push 到遠程倉庫。
7)回到 atguiguyueyue 的 GitHub 遠程倉庫中可以看到,最后一次是 lhc 提交的。
6.2.5 拉取(原來有的,是要獲取有進行修改的文件)遠程庫內容:git pull 遠程庫地址別名 遠程分支名
1)基本語法 git pull 遠程庫地址別名 遠程分支名
2)案例實操
6.3 跨團隊協作
1)將遠程倉庫的地址復制發給邀請跨團隊協作的人,比如東方不敗。
2)在東方不敗的 Gitee 賬號里的地址欄復制收到的鏈接,然后點擊 Fork 將項目叉到自 己的本地倉庫。
叉成功后可以看到當前倉庫信息
3)東方不敗就可以在線編輯叉取過來的文件。
4)編輯完畢后,填寫描述信息并點擊左下角綠色按鈕提交。
5)接下來點擊上方的 Pull 請求,并創建一個新的請求。
6)回到岳岳 Gitee 賬號可以看到有一個 Pull request 請求。
進入到聊天室,可以討論代碼相關內容。
7)如果代碼沒有問題,可以點擊 Merge pull reque 合并代碼
6.4 SSH 免密登錄
第 7 章 IDEA 集成 Git
7.1 配置 Git 忽略文件
1)Eclipse 特定文件
2)IDEA 特定文件
3)Maven 工程的 target 目錄
7.2 定位 Git 程序
# Compiled class file *.class # Log file *.log # BlueJ files *.ctxt # Mobile Tools for Java (J2ME) .mtj.tmp/ # Package Files # *.jar *.war *.nar *.ear *.zip *.tar.gz *.rar # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml hs_err_pid* .classpath .project .settings target .idea *.iml7.3 初始化本地庫
選擇要創建 Git 本地倉庫的工程。
?
?
7.4 添加到暫存區
右鍵點擊項目選擇 Git -> Add 將項目添加到暫存區。
7.5 提交到本地庫
?將文件手動添加到git中去
?
?
7.6 切換版本
先將修改后的代碼添加到暫存區中
然后將修改后的代碼添加到本地庫中
?
查看當前版本
?右鍵選擇要切換的版本,然后在菜單里點擊 Checkout Revision。
?返回前一個版本
?返回master分支版本
7.7 創建分支
選擇 Git,在 Repository 里面,點擊 Branches 按鈕。
在彈出的 Git Branches 框里,點擊 New Branch 按鈕。
填寫分支名稱,創建 hot-fix 分支。
然后再 IDEA 的右下角看到 hot-fix,說明分支創建成功,并且當前已經切換成 hot-fix 分 支
7.8 切換分支
在 IDEA 窗口的右下角,切換到 master 分支。
然后在 IDEA 窗口的右下角看到了 master,說明 master 分支切換成功。
7.9 合并分支
在 IDEA 窗口的右下角,將 hot-fix 分支合并到當前 master 分支。
如果代碼沒有沖突,分支直接合并成功,分支合并成功以后,代碼自動提交,無需手動 提交本地庫。
7.10 解決沖突
如圖所示,如果 master 分支和 hot-fix 分支都修改了代碼,在合并分支的時候就會發生 沖突。
我們現在站在 master 分支上合并 hot-fix 分支,就會發生代碼沖突。
點擊 Conflicts 框里的 Merge 按鈕,進行手動合并代碼
手動合并完代碼以后,點擊右下角的 Apply 按鈕。
代碼沖突解決,自動提交本地庫。
第 8 章 IDEA 集成 GitHub
8.1 設置 GitHub 賬號
如果出現 401 等情況連接不上的,是因為網絡原因,可以使用以下方式連接:
然后去 GitHub 賬戶上設置 token
?
點擊生成 token。
復制紅框中的字符串到 idea 中。
點擊登錄。
8.2 分享工程到 GitHub
來到 GitHub 中發現已經幫我們創建好了 gitTest 的遠程倉庫。
8.3 push 推送本地庫到遠程庫--【push之前先pull(如果本地庫的代碼比遠程的代碼低(或者相同),則push失敗)】
右鍵點擊項目,可以將當前分支的內容 push 到 GitHub 的遠程倉庫中。
右鍵點擊項目,可以將遠程倉庫的內容 pull 到本地倉庫
8.4 pull 拉取遠程庫到本地庫
右鍵點擊項目,可以將遠程倉庫的內容 pull 到本地倉庫。
注意:pull 是拉取遠端倉庫代碼到本地,如果遠程庫代碼和本地庫代碼不一致,會自動 合并,如果自動合并失敗,還會涉及到手動解決沖突的問題。
8.5 clone 克隆遠程庫到本地
?
為 clone 下來的項目創建一個工程,然后點擊 Next。
第 9 章 國內代碼托管中心-碼云
9.1 簡介
眾所周知,GitHub 服務器在國外,使用 GitHub 作為項目托管網站,如果網速不好的話, 嚴重影響使用體驗,甚至會出現登錄不上的情況。針對這個情況,大家也可以使用國內的項 目托管網站-碼云。碼云是開源中國推出的基于 Git 的代碼托管服務中心,網址是 https://gitee.com/ ,使用 方式跟 GitHub 一樣,而且它還是一個中文網站,如果你英文不是很好它是最好的選擇。
9.2 碼云帳號注冊和登錄
進入碼云官網地址:https://gitee.com/,點擊注冊 Gitee
?輸入個人信息,進行注冊即可。
?帳號注冊成功以后,直接登錄。
?登錄以后,就可以看到碼云官網首頁了。
?9.3 碼云創建遠程庫
點擊首頁右上角的加號,選擇下面的新建倉庫
填寫倉庫名稱,路徑和選擇是否開源(共開庫或私有庫)?
?最后根據需求選擇分支模型,然后點擊創建按鈕。
?遠程庫創建好以后,就可以看到 HTTPS 和 SSH 的鏈接。
?9.4 IDEA 集成碼云
9.4.1 IDEA 安裝碼云插件
Idea 默認不帶碼云插件,我們第一步要安裝 Gitee 插件。
如圖所示,在 Idea 插件商店搜索 Gitee,然后點擊右側的 Install 按鈕
?Idea 鏈接碼云和鏈接 GitHub 幾乎一樣,安裝成功后,重啟 Idea。
?Idea 重啟以后在 Version Control 設置里面看到 Gitee,說明碼云插件安裝成功。
?然后在碼云插件里面添加碼云帳號,我們就可以用 Idea 連接碼云了
9.4.2 IDEA 連接碼云
Idea 連接碼云和連接 GitHub 幾乎一樣,首先在 Idea 里面創建一個工程,初始化 git 工 程,然后將代碼添加到暫存區,提交到本地庫,這些步驟上面已經講過,此處不再贅述。
? 將本地代碼 push 到碼云遠程庫
?自定義遠程庫鏈接。
?給遠程庫鏈接定義個 name,然后再 URL 里面填入碼云遠程庫的 HTTPS 鏈接即可。碼云服務器在國內,用 HTTPS 鏈接即可,沒必要用 SSH 免密鏈接。
?
?然后選擇定義好的遠程鏈接,點擊 Push 即可。
?看到提示就說明 Push 遠程庫成功。
9.5 碼云復制 GitHub 項目
碼云提供了直接復制 GitHub 項目的功能,方便我們做項目的遷移和下載。 具體操作如下:
?將 GitHub 的遠程庫 HTTPS 鏈接復制過來,點擊創建按鈕即可。
如果 GitHub 項目更新了以后,在碼云項目端可以手動重新同步,進行更新!
第 10 章 自建代碼托管平臺-GitLab【跳過】
10.1 GitLab 簡介
?10.2 GitLab 官網地址
官網地址:https://about.gitlab.com/
安裝說明:https://about.gitlab.com/installation/
10.3 GitLab 安裝
10.3.1 服務器準備
?10.3.2 安裝包準備
?10.3.3 編寫安裝腳本
安裝 gitlab 步驟比較繁瑣,因此我們可以參考官網編寫 gitlab 的安裝腳本。
總結
以上是生活随笔為你收集整理的Git学习笔记【尚硅谷】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 对标西湖大学、投资超460亿!这所新大学
- 下一篇: CSS权威指南-候选样式表