前言
作為一個軟件開發人員,不可能不知道Git。Git作為一個復雜的版本控制系統,命令之多,即使經常使用,一些命令也記不住,一般只記住幾個常用的命令,不是所有使用Git命令行都是高效的。本教程不講Git命令,而是先讓你用上git,再去學習git。本教程應該稱作TortoiseGit入門指南。因為下面要借助一個圖形化的軟件,TortoiseGit來操作git。用GUI(圖形界面)再談CLI(命令行),我相信這會更容易讓人接受。
TortoiseGit 簡介
TortoiseGit 簡稱 tgit, 中文名海龜Git。TortoiseGit是一個開放的GIT版本控制系統的源客戶端。
TortoiseGit 支持Winxp/vista/win7/Win10,提供有中文版支持。
TortoiseGit 可以恢復您的文件的舊版本,並研究如何以及合適改變了歷史數據,誰改變了它。下面教程針對使用TortoiseGit 的用戶。
下載安裝Git及Tortoisegit
環境安裝,需要依次安裝以下:
第1步:下載Git,下載地址:https://git-for-windows.github.io/
Git 安裝過程不詳述,可參考:https://www.cnblogs.com/wj-1314/p/7993819.html
第2步:下載安裝Tortoisegit及中文語言包(Tortoisegit及語言包下載 ,Tortoisegit 安裝教程)
Tortoisegit 配置
第1步: 首先,請選定一個存放Git項目的目錄,這樣方便管理. 如: E:\Git,然后在資源管理器中打開:
第2步: 在空白處點擊鼠標右鍵,選擇 --> TortoiseGit --> Settings,然后就可以看到配置界面:
第3步:選中General,在右邊的 Language中選擇簡體中文(當然,你也可以繼續使用英文)。取消勾選升級檢查的復選框,可能還需要指定 git.exe 文件的路徑,如 "D:\Program Files\Git\bin"。完成后,點擊應用,確定關閉對話框。
第4步:配置用戶,用戶作為你操作git的個人標識,進入設置,點選左邊的Git標簽,可以發現,右邊可以配置用戶的名字與Email信息. 如下圖所示:
因為當前還沒有本地項目,所以 “編輯本地 .git/config(L)” 按鈕處於灰色不可用狀態,如果在某個本地Git項目下打開配置對話框,那么這個按鈕就可用,然后就可以編輯此項目的一些屬性。
點擊 “編輯全局 .git/config(O)”按鈕,會使用記事本打開全局配置文件,在全局配置文件中,在后面加上下面的內容(記住密碼):
[credential] helper = store
完成后保存,關閉記事本,確定即可。
則當你使用 HTTPS URL 方式推送項目到GitHub等在線倉庫時,海龜git會記住你輸入的用戶名和密碼(這里不是用戶的姓名和Email哦),可以避免每次提交都要輸入用戶名和密碼。(還有種方式,通過使用 SSH URL 來提交代碼便可以一勞永逸了~~~)
如果你編輯的是 本地 .git/config(L),其實這個翻譯為本地有點問題,應該叫局部,也就是在某個項目下面設置,只對此項目有效,配置是一樣的。
Tortoisegit 使用示例
克隆一個項目(分別從github倉庫、自己搭建的gitblit 倉庫上獲取)
教程開始之前,補充一個知識點:
本地倉庫和遠程git倉庫的連接方式有兩種:HTTPS 和 SSH,很多時候都是直接使用 HTTPS URL 方式克隆項目到本地,當然也有有些人使用SSH URL克隆到本地。這兩種方式的主要區別在於:
- HTTPS:使用起來不用配置,對初學者來說會比較方便,只要復制HTTPS URL然后到git Bash里面直接用clone命令克隆到本地就好了,但是每次 fetch 和 push代碼都需要輸入賬號和密碼,這也是HTTPS 方式的麻煩之處。
- SSH:使用SSH URL方式需要在克隆之前先配置和添加好SSH key,因此,如果你想要使用SSH url克隆的話,你必須是這個項目的擁有者。否則你是無法添加SSH key的,另外ssh默認是每次fetch和push代碼都不需要輸入賬號和密碼,如果你想要每次都輸入賬號密碼才能進行fetch和push也可以另外進行設置。多數介紹Git的博客里面采用的都是https的方式作為案例,今天主要是記錄如何配置並在海龜git中使用SSH方式來提交和克隆代碼。
第1步:此處介紹通過SSH URL方式傳輸,使用之前需要先將本地的 SSH 公鑰配置到 Git 服務器上。
先查看SSH Key。在C盤用戶主目錄用戶目錄下,看看有沒有.ssh目錄,如果有,再看看這個目錄下有沒有id_rsa
和id_rsa.pub
這兩個文件,如果已經有了,可直接跳到第2步。
如果沒有上述文件,則需要創建一個SSH Key,在任意文件夾下點擊右鍵,選擇 Git GUI Here。在彈出的程序中選擇主菜單的【Help】→【Show SSH Key】:
如果沒有Key,則點擊“Generate Key”生成一個SSH Key:
把生成的全部內容拷出來。
如果一切順利的話,可以在用戶主目錄里找到.ssh
目錄,里面有id_rsa
和id_rsa.pub
兩個文件,這兩個就是SSH Key的秘鑰對,id_rsa
是私鑰,不能泄露出去,id_rsa.pub
是公鑰,可以放心地告訴任何人。(其他創建SSH Key方式:通過Shell命令方式創建)
第2步:把 SSH Key 填到Git 服務器的配置中。
GitHub服務器:登陸GitHub,【頭像】→【Settings】→【SSH and GPG Keys】→【New SSH Key】,填入上一步的復制的SSHKey,然后【Add SSH Key】:
Gitblit 服務器(自己搭建 Git 服務器,Gitblit的安裝教程請看這里),登錄 Gitblit賬戶,在【頭像】→【用戶中心】→【SSH Keys】,填入上一步的復制的SSHKey,然后【添加】
為什么GitHub需要SSH Key呢?因為GitHub需要識別出你推送的提交確實是你推送的,而不是別人冒充的,而Git支持SSH協議,所以,GitHub只要知道了你的公鑰,就可以確認只有你自己才能推送。
第3步:要克隆 GitHub 或 Gitblit 上的項目,先要獲取對應遠程存儲庫的路徑(注意:此處使用 SSH URL 方式):
GitHub倉庫:從 GitHub項目頁面上得到對應存儲庫的 giturl 路徑:
Gitblit 倉庫:在存儲庫頁面這個位置得到存儲庫的 giturl 路徑:
第4步:在本地文件夾的空白位置處,右擊鼠標,在菜單中選擇【Git克隆】:
把git 路徑填寫到URL,並選擇本地文件目錄,點擊【確定】,彈出下載進度窗口。(服務器端至少要有一個文件,否則 pull的時候會報錯 fatal: Couldn't find remote ref HEAD)
克隆成功,則在文件夾上就可以看到角標標識:
- Git文件上角標符號說明:
文件上的圖標,可以反映出當前文件或者文件夾的狀態:
1、正常的:綠色的對號
2、被修改過的:紅色感嘆號
3、新添加的:藍色的加號
4、未受控的(無版本控制的):藍色的問號
5、忽略不受控的:灰色的減號
6、刪除的:紅色的x號
7、有沖突的:黃色的感嘆號
-
若是看不到可以查看該教程:TortoiseGit狀態圖標不能正常顯示的解決辦法
將代碼提交到服務器
Git的使用類似TFS、SVN等源代碼或者文件管理器,慣例的流程:
第一步:改動,修改本地項目中的某些文件,如修改 README.md 內容,還可以增加一些文件, 如Hello.txt。
第二步:提交本地,在本地項目的空白處點擊鼠標右鍵,選擇 【Git提交(C) -> "master"...】
在彈出提交(Commit)對話框中完成提交說明信息,和選擇需要提交的文件,可根據需要新建分支,然后點擊 【提交】 按鈕,將修改提交到本地倉庫:
彈出提交進度窗口,提交成功后還需要“推送”將本地倉庫的修改推送到遠程倉庫。
第3步:同步拉取,在實際工作中,如果多人協作或者多個客戶端進行修改,那么我們還要拉取別人推送到在線倉庫的內容,所以在推送之前需要先執行同步拉取(Pull ...)操作。
在本地倉庫文件夾上【右擊鼠標】→【Git同步】:
打開Git同步窗口(包括常規操作及日志,同右擊菜單快捷操作一樣),點擊【拉取(P)】,將遠程分支拉取到本地:
如果服務器上的文件沒有被修改過,就會直接提示已經更新到最新,那你就可以直接進行下一步“推送(H)”操作了:
反之,如果服務器上的文件被修改過了(本地文件修改前不是最新版本),就會提示沖突。先要解決沖突,然后再提交結果:
需要注意的是,和使用TFS、SVN的習慣一樣,你在修改本地內容之前,最好先 拉取(pull)一下,減少沖突的可能。
第四步:推送遠程,將提交到本地倉庫的修改推送到遠程倉庫,可以直接在提交成功后的提示窗口上點擊【推送(H)...】,或者在Git同步窗口點擊【推送(H)...】,鼠標右擊的菜單上也有相應的快捷操作:選擇 【TortoiseGit(T)】→【推送(H)...】
彈出推送(push)對話框:
一般保持默認,點擊 “確定” 按鈕
然后彈出推送進度界面,可能要求你輸入用戶名,點擊【確定】,然后要求輸入密碼,密碼輸入正確后,顯示推送成功界面:
如果你按照上一小節Tortoisegit 配置的設置操作,則輸入密碼以后會記住密碼。密碼會明文保存在C:\Users\用戶名\.git-credentials 這個文件中,請小心保存。
小結
以上就是海龜Git常規的操作流程,git的功能很強大,相應的命令也很多,使用圖形界面把Git的操作簡化了確是大大的方便。