TortoiseGit入門教程(個人用 可能存在問題)
git是什么
是版本控制系統 是一個記錄某個文件的各個變動版本並有詳細注釋 如下面表格就是記錄了 修改人 修改時間修改內容 這樣在我們需要找到一些歷史版本的時候就清晰明了
版本 | 文件名 | 用戶 | 說明 | 日期 |
---|---|---|---|---|
1 | service.doc | 張三 | 刪除了軟件服務條款5 | 7/12 10:38 |
2 | service.doc | 張三 | 增加了License人數限制 | 7/12 18:09 |
3 | service.doc | 李四 | 財務部門調整了合同金額 | 7/13 9:51 |
4 | service.doc | 張三 | 延長了免費升級周期 | 7/14 15:17 |
老師使用word的例子也很形象的描述了git
我們用word寫報告 隨着情況變化 有些地方需要再調整 但是原來的東西未必之后不會用上 所有我們就另存為 一個新word 名字叫 報告2020年10月9日 12:08:46.word 后面又遇到更多的情況 為了安全自然繼續另存為 結果到最后就會出現這樣
版本控制系統的分類
- 集中式 如cvs svn
- 分布式 git
集中式和分布式的區別
集中式是需要一台服務器專門存儲文件和歷史備份 每次程序員都需要從服務器上下載代碼下來 修改完畢再上傳上去 一切的操作實際上都圍繞這台服務器來進行
分布式是沒有一台服務器專門存儲文件和歷史備份 或者說 程序員每個人的電腦都是一個存儲文件和歷史備份的服務器(本地倉庫) 需要更新修改和備份 電腦之間相互推送下自己的修改和備份給其他人就可以了 實際上很多時候會選出一個電腦(或者是gitub或者gitee)作為遠程倉庫 在這個平台上只是負責存儲各個的備份
安裝配置git和TortoiseGit
- git下載地址 windows下安裝 下一步下一步就好 沒什么要說的
- git和TortoiseGit的區別:Git本身就是Git,然后Github for windows和TorToiseGit都是Git的一個Gui包裝(理解為是git的一個插件) 一般情況下我們都是通過TortoiseGit的圖形界面 來操作git操作 而不是git本身 或者直接git命令行
- TortoiseGit下載(git小烏龜) 下載TortoiseGit本體和簡體中文語言包 自然是先裝本體然后再安裝語言包
- Git小烏龜的安裝及使用
- 更詳細的可以看開頭的教程鏈接 包含安裝期間的注意事項和初始配置 語言包的安裝等等 2020黑馬Git教程(2小時從入門到精通)【已完結】 的第三節 有完整的流程
git的四個區域和相互關系
-
workspace 工作區
- 作用:我們編輯修改代碼的地方
- 位置:在生成git版本庫的指定文件夾下 除了隱藏的.git目錄 剩下的都是工作區
-
reposiroty 本地倉庫(版本庫)
- 作用:自然是存儲文件和對應的各個版本快照 還有一些其他的內容
- 位置:在自己的機器 就是整個的.git隱藏目錄 在index暫存區 commite 到本地倉庫存儲
- 包含的內容:
- index暫存區(stage)
- 分支
- HEAD指針 默認指向master分支
- 各個文件快照
-
index 暫存區
- 作用 :版本庫的一部分 工作區中修改完畢后 git add命令把代碼送到暫存區存放 等到這批修改都放入暫存區再統一的用commit壓入到本地倉庫 不過在TortoiseGit中暫存區的存在感想當的薄弱 因為提交命令是add+commit 提交直接到了本地倉庫 省略了中間過程
- 位置:實際是放在.git目錄下的index文件 該文件會記錄該暫存區所記錄的文件及變動
- 查看:用git status 來查看當前暫存區的內容
-
remote 遠程倉庫
-
作用:本地倉庫使用git push來提交信息到這里 也可以pull從遠程倉庫拉取
-
位置:可能是其他電腦 也可以是github 或者gitee等等
-
-
本地閉環結構和之間的相互關系
-
完整的閉環結構
git文件的4種狀態和三種圖標
工作區下的三種文件圖標:
- 紅色嘆號表示 文件有變動 而且沒有被commit
- 藍色加號表示已經添加添加到了暫存區 但是沒commit
- 綠色對勾表示文件已經被commit
狀態:
-
Unknown:新增的文件,也不在版本庫
-
Added:新增的文件,在版本庫
-
Modified:文件修改,在版本庫
-
Missing:文件被刪除,在版本庫有快照 但是工作區下已經刪除沒了
基本流程
- 從遠程倉庫拉取最新變動的工程到本地倉庫
- 在工作區對文件添加、修改文件;
- 將修改后的文件放入暫存區域;
- 將暫存區域的文件提交到本地倉庫;
- 將本地倉庫的修改推送到遠程倉庫。
TortoiseGit下的基本操作(非命令行)
-
創建本地倉庫
- 打開TortoiseGit:注意TortoiseGit在windows下是附着在資源管理器上的 只需要打開資源管理器 然后鼠標右鍵選擇TortoiseGit的操作就可以進行對應操作了
- 創建本地倉庫流程:選擇要創建本地倉庫的目錄- 鼠標右鍵 -選擇Git在這里創建版本庫 - 彈出窗口千萬不要勾選制作純版本庫- 點擊確定 - 彈出提示初始化空本地倉庫的窗口 - 創建成功
- 查看本地版本庫的存儲的文件和目錄:選中版本庫目錄 - 鼠標右鍵 - TortoiseGit - 版本庫瀏覽器 -- 可以查看目前在版本庫中存儲的文件
- 克隆遠程倉庫到本地生成本地倉庫:
- 注意本地文件夾不能有.git目錄 不然不會出現克隆選項
- 從github或者gitee上 克隆下載 按鈕 點擊 找到 鏈接 是https還是ssh可以選擇 復制鏈接
- 本地文件夾 - 右鍵 - 克隆 - 窗口里面填寫 復制的鏈接 設置下載的本地文件夾 點確定就行
-
添加文件到本地倉庫
- 添加的文件要求:該文件必須在本地版本庫目錄內才可以添加
- 添加文件流程:首先把文件放置到本地版本庫目錄內 - 鼠標右鍵 -TortoiseGit - 添加 - 加入完成窗口 - 點擊確定按鈕 (這里點確定只是把文件送到暫存區 如果點擊了提交了才直接送到本地倉庫)
-
修改文件並提交到本地倉庫
-
繼續提交文件到本地倉庫:接上面的操作 選中文件 - 鼠標右鍵 - 提交 XXXX - 出現提交窗口 - 寫上該文件的日志信息 - 最好勾選 作者和日期 - 點擊提交按鈕 - 點擊關閉按鈕即可
-
查看某個文件的歷史快照:選中該文件 - 鼠標右鍵 - TortoiseGit - 顯示日志 - 可以查看過往的歷史快照
-
-
將工程整個添加到本地倉庫
- 忽略某些工程文件 不添加到本地倉庫:
- 忽略某些文件目錄的原因:要添加某個工程到本地倉庫 工程里面的有些私人文件或者文件夾是不能添加到本地倉庫的 因為很可能后面上面上傳到遠程倉庫被大家都看到 泄露隱私
- 忽略文件目錄流程:進入工程目錄內 找到要忽略的文件或者目錄 鼠標右鍵 - TortoiseGit - 添加到忽略列表 - 選擇文件或者目錄名而不是擴展名 - 出現忽略窗口 - 一般都選擇遞歸忽略和忽略文件放到文件目錄所在目錄 - 點擊確定 - 在本地就會生成一個忽略列表文件來記錄哪些是被忽略的 - 注意 這個自動生成的忽略文件也要提交到本地倉庫 不要忘記了
- 工程文件夾添加進本地倉庫:
- 把工程文件夾復制到本地倉庫目錄里面 因為只有到了本地倉庫目錄 才能把他們添加到本地倉庫 否則連添加都沒法添加
- 設置忽略文件或者目錄 生成忽略文件
- 選中工程目錄 - 鼠標右鍵 - TortoiseGit - 添加 - 添加整個工程文件夾到暫存區 然后根據需要提交到本地倉庫 即可
- 忽略某些工程文件 不添加到本地倉庫:
-
刪除本地倉庫的文件
-
從版本庫中徹底刪除文件: 在資源管理器中直接刪除或者TortoiseGit下的刪除 然后把這改動提交到本地倉庫就行
在版本庫目錄下 - 鼠標右鍵 - GIt提交 master - 出現提交窗口 - 窗口下方有文件呈現缺失狀態 勾選它- 寫入刪除日志 - 提交 - 即可從版本庫中完全刪除
-
誤刪文件但是想還原:在版本庫目錄下 - 鼠標右鍵 - TortoiseGit - 還原 其實是從本地倉庫的該文件的歷史快照還原了一下而已
-
刪除版本庫里面的該文件對應的歷史快照 但是不刪除本地文件:選中該文件 - 鼠標右鍵 - TortoiseGit - 刪除並保留本地副本 然后再 鼠標右鍵 - GIt提交 master - 出現提交窗口 - 窗口下方有文件呈現缺失狀態 勾選它- 寫入刪除日志 - 提交 -
-
-
查看文件的歷史快照和還原指定版本
-
快速找到需要的歷史快照:日志信息窗口的最上部那行 可以選擇提交時間段 備注關鍵字 作者名 標簽等等很多條件查詢
-
查看歷史快照的文件內容和文件變動 :日志信息窗口 - 選中歷史快照 - 右鍵 - 和工作副本比較 - 就可以看到歷史快照的該文件和當前工作區的對應文件的比較 文件變動 日志信息窗口 - 選中歷史快照 下面是涉及到的文件變化列表
-
對比不同的歷史快照的文件內容差異: 日志信息窗口-按住 Ctrl -> 選中兩個歷史版本 -> 鼠標右鍵 -> 比較版本差異 - 出現比較差異窗口 下面雙擊文件名 就可以查看詳細的對比;
-
還原指定歷史版本(版本回溯): 選中該文件 - 鼠標右鍵 - TortoiseGit - 顯示日志 - 選擇你要回溯的歷史快照-- 右鍵 - 重置master到此版本 - 重置窗口 - 選擇硬重置hard選項 ( 注意的是 這個選擇會讓工作區的文件和結構也會返回歷史快照的狀態 會覆蓋當前的工作區文件內容 如果有需要備份當前工作區的文件內容 以防萬一) - 點確定 - 還原指定歷史版本完成(臨時貯藏本地文件 :這里臨時備份下工作區文檔 可以使用 鼠標右鍵 - TortoiseGit - 貯藏更改 - 等到還原完畢了 再 鼠標右鍵 - TortoiseGit -彈出貯藏 - 就可以恢復工作區的原來內容了)
-
還原歷史快照的操作日志的查看: 鼠標右鍵 - TortoiseGit 顯示引用記錄 可以查看
-
本地倉庫還原歷史版本對遠程倉庫推送的影響:因為遠程倉庫是最新的 本地倉庫還原到老版本 把本地老版本推送到遠程倉庫的最新版本 自然會失敗 如果想執意把遠程倉庫更新到本地的老版本 不要使用同步窗口來推送 用 在版本庫目錄下 - 鼠標右鍵 - TortoiseGit - 推送 出現推送界面勾選 強制 已知變更 (意思就是強制推送 強制讓遠程倉庫更新到本地還原的那個版本)- 確定 即可 但是要慎用 因為會覆蓋掉遠程倉庫的數據
-
-
推送本地倉庫到遠程倉庫 以gitee為例
-
創建遠程倉庫之gitee
- 注冊gitee賬號 登錄進入
- 創建遠程倉庫 右上有+號 點開 - 選擇 新建倉庫- 輸入你要創建的版本庫名字和版本庫描述信息 - 選擇public 如果選擇private會收費畢竟違背開源精神 不要勾選任何預置文件 比如readme之類的統統不要 要一個干凈的版本庫 -創建
- 查看遠程倉庫 登錄進來右上最右邊的三角點開 - 個人主頁 - 倉庫
-
選擇連接方式配置連接遠程倉庫
-
常見的ssh https方式介紹
-
ssh的作用:本身是一個網絡協議 主要是實現安全遠程登錄 安全的通訊協議 基於密鑰的安全 需要創建2個 私鑰加密 公鑰解密 公鑰私鑰的知識 私鑰保留下來 不要發送給別人 非對稱加密
-
ssh的基本原理:圖解SSH原理
-
https的作用:是以安全為目標的 HTTP 通道,在HTTP的基礎上通過傳輸加密和身份認證保證了傳輸過程的安全性
-
https和ssh的區別:
1、前者可以隨意克隆github上的項目,而不管是誰的;而后者則是你必須是你要克隆的項目的擁有者或管理員,且需要先添加 SSH key ,否則無法克隆。
2、https url 在push的時候是需要驗證用戶名和密碼的;而 SSH 在push的時候,是不需要輸入用戶名的,如果配置SSH key的時候設置了密碼,則需要輸入密碼的,否則直接是不需要輸入密碼的。
-
-
https方式連接遠程倉庫(推薦簡單直接 ssh配置有點復雜)
- 登錄gitee獲取 賬號密碼 進入要連接的 遠程倉庫 右側的 橘色按鈕 克隆下載 點擊可以查看到https方式連接的url 復制
- 鼠標右鍵 - TortoiseGit - 設置 - 選擇git左側欄 - 輸入用戶和email - 選擇 遠端 - 輸入遠端名 和剛才復制的url 因為不是ssh 無需設置密鑰 要標簽 點確定 嘗試連接 第一次連接會要gitee的賬號和密碼
-
ssh方式連接遠程倉庫
- 在win7系統下使用TortoiseGit(烏龜git)簡單操作Git@OSC 詳細流程直接看這個
- 用putty生成密鑰對 獲得公鑰私鑰
- 在gitee上傳公鑰 獲取ssh地址
- 在tortository上配置用戶名 email 和 遠端的名字 連接地址 和對應的putty的私鑰文件
- 配置好后開始推送嘗試 注意第一次推送會要gitee的賬號和密碼 記得寫好 一旦報錯 可以直接控制面板找憑證管理器 里面找到gitee的賬號密碼信息 修改為正確的就行
-
-
推送到遠程倉庫
-
沒什么說的 鼠標右鍵 - TortoiseGit - 推送 - 窗口里面 選擇要推送的本地分支 一般都是master 下面還要選擇 遠端 -點確定
-
同步界面來推送 鼠標右鍵 - 同步 (推薦使用這個來) 主要是和遠程倉庫進行同步操作的 包含了 拉取 獲取 推送 提交 查看日志 歷史文件比較 查看等待提交 等待推送 的內容等等功能 是一個綜合性的界面 非常值得仔細研究
-
-
常見遇到的問題
-
推送失敗的常見原因圖示 其實很多時候拉取失敗也是類似的問題 代碼沖突也和這個沾邊
-
一般都是推送失敗的情況 可以把失敗的反饋 搜索下 基本就有解決辦法 比如本地倉庫還原到了歷史快照 但是遠程倉庫卻還是最新的 會出現無法推送到遠程倉庫 這類情況就強制推送 推送界面勾選 強制 已知變更 然后推送 這就是最終手段 會覆蓋遠程倉庫的數據 慎用
-
比較常見的推送失敗處理流程: 先貯藏下當前工作區的改動(鼠標右鍵 - TortoiseGit - 貯藏更改) 然后從遠程倉庫拉取一下最新的的版本庫- 然后再彈出貯藏 - 可能會出現代碼沖突 - 沖突文件上編輯沖突 - 查看沖突和解決沖突 - 保存標記沖突解決 - 提交 - 再推送**到遠程倉庫 具體細節可以看代碼沖突部分
-
-
-
拉取遠程倉庫到本地倉庫
- 鼠標右鍵 - TortoiseGit - 拉取 或者 鼠標右鍵 - 同步 使用同步界面拉取
- 推薦拉取 因為拉取其實是2個命令 一個是fetch 一個是merge(合並) 而獲取fetch只是單單獲取而已 但是拉取有點不好的是會自動把同名文件的不同內容自動合並到一起了 從而產生代碼沖突
- 拉取失敗 搜索錯誤關鍵字吧 或者也是用 貯藏的路子試試
-
出現代碼沖突問題的解決
-
其他沖突可以自行百度必應 而且反饋的錯誤信息並不難懂
-
代碼沖突基本出現在多人同時對一個項目進行操作的情況下 一般出現在推送 拉取 還原歷史快照 本質上是同一個文件被多個人同時修改而內容產生了差異導致TortoiseGit不知道如何處理這些差異
-
代碼沖突測試(人工模擬一次代碼沖突)
-
直接在gitee上修改1,txt文件內容為0123
0 1 2 3
-
在本地工作區的1.txt文件內容改為0224
0 2 2 4
-
然后在嘗試從gitee上拉取工程到本地倉庫 結果是
隨后有一個彈窗提示
-
如何找到這個沖突文件呢。鼠標右鍵 - TortoiseGit - 解決沖突(不是編輯沖突) - 出現沖突窗口 列表里面就顯示當前出現代碼沖突的文件 - 雙擊文件
-
官方處理流程
-
沖突窗口雙擊沖突文件打開默認的差異對比工具
-
切換差異部分來編輯合並后的1.txt內容 直到滿意為止 這里把合並的內容隨便改為了0 2 4 8
-
點擊標記為已解決 然后在點擊保存 關閉 對比工具
-
再次提交 這次的合並修改操作 出現一個意外提示 提示強調這次的提交涉及到代碼合並 千萬確定好了再提交之類的balabala..... 點擊確定 - 重寫提交的日志信息 - 提交到本地倉庫
-
順便推送到遠程倉庫就好
-
-
自己處理流程 (官方流程很好 但是需要用到官方工具來處理沖突 使用起來不太順手 還是使用語言對應的編輯工具處理比較好)
-
依然是打開沖突窗口找到沖突文件 在資源管理器里面找到了該文件 用對應的編輯器打開他 這里用notepad演示
-
直接把內容改為我們需要的內容 保存
-
鼠標右鍵 - TortoiseGit - 解決沖突(不是編輯沖突) - 出現沖突窗口 勾選沖突文件 點擊確定 - 點擊提交 (這步其實就是設置沖突已解決而已)
-
出現提交窗口和一個提醒當前是合並代碼的提交balabala之類的 寫提交日志 點提交按鈕 - 提交完畢
-
順便推送到遠程倉庫 完畢
-
-
-
分支的各種操作 沒搞明白 后面再說吧