1. 關于 Git 你應該知道的東西Git 是一個分布式版本控制系統(tǒng)。分布式的意思是,每個人電腦上都是一份完整的代碼庫,包含了所有的代碼提交歷史。 重要概念:本地一個代碼庫,對本地文件的所有操作,最后都是提交到這個代碼庫中。同時可以設置多個遠程(remote,默認的remote通常用origin表示),當你要將代碼更新到服務器上時(稱作push),就通過設置的remote,更新到指定的服務器。
1.1 一些術語
1.2 工作流程
1.3 Gitlab 可以做什么Gitlab 是 Git 服務端的集成管理平臺,提供了:
目前官方?jīng)]有中文版,有個人漢化版本,一些地方對中文的支持較不好(詳見后續(xù)章節(jié)),如果有需要中文翻譯的地方,可以自己修改對應的代碼。 怎么安裝和維護 Gitlab,請看我另外的兩篇博客 2. 安裝與配置需要安裝以下工具:
Git 圖形界面操作工具
TortoiseGit只有 Windows 版本,有32位和64位版本,請根據(jù)自己的電腦選擇相應的版本,同時下載對應版本的中文語言包。 2.1 設置 TortoiseGit 中文語言右鍵 -> TortoiseGit -> 設置 2.2 設置用戶名和郵箱點擊 2.3 設置保存密碼默認情況下,Git 客戶端每次與服務器交互,都需要輸入密碼。但是我們可以配置保存密碼,只需要輸入一次,就不再需要輸入密碼。 選擇
2.4 配置 SSH KeyGit 可以通過 HTTP 和 SSH 的方式連接,如果要使用SSH的方式連接,需要確保自己的 IP 有訪問 Gitlab 服務器 22 端口的權限。 通過 SSH 的方式,可以不用每次與服務器進行交互時都需要輸入用戶名和密碼。如果是 IDE 中的 Git 插件,則有保存密碼的功能。 2.5 生成 SSH Key2.5.1 在 Git Bash 命令行下生成鼠標右鍵 -> Git Bash
生成后的公鑰會存放在
2.5.2 在可視化工具下生成
鼠標右鍵 -> Git Gui 幫助 -> Show SSH Key 點擊 Generate Key,彈出一個對話框,提示輸入 passphrase(密碼短語),需要輸入兩次。意思就是以后提交數(shù)據(jù)到服務端,只要輸入這個密碼短語就可以了。這里可以為空,直接點OK,這樣,以后就不需要輸入任何密碼。但建議還是要輸入密碼短語。 復制 SSH Key 的公鑰 2.6 在 Gitlab 上配置 SSH Key配置好 SSH Key 以后提交代碼,可以不用輸入密碼。點擊右上角的資料設置 -> SSH 密鑰 -> 增加 SSH 密鑰 粘貼剛剛復制的 SSH Key 公鑰,標題為可選,不寫會自動生成 2.7 配置 Gitlab2.7.1 上傳個人頭像請上傳個人頭像,主要是為了易于識別用戶。 2.7.2 設置郵件通知如果不想收到郵件通知,可以設置關閉。但是建議開啟郵件通知。 3. Git 基本功能簡介3.1 我是項目的創(chuàng)建者,我要創(chuàng)建項目3.1.1 在 Gitlab 上執(zhí)行創(chuàng)建新項目
項目創(chuàng)建完成后,需要初始化,請保留該頁面,在必要時復制項目的 SSH 地址
3.1.2 初始化項目以下這些操作,需要在項目的目錄下進行。請注意如果你的項目文件夾路徑包含中文,請使用 TortoiseGit 工具來操作,不要使用 Git Gui,否則會出現(xiàn)錯誤。 3.1.3 創(chuàng)建一份排除版本控制的文件類型清單在項目中,實際上有很多文件是不需要版本控制的,例如編譯過程中生成的中間文件 我們只要在項目的目錄下,放一個 這份 Github 上面有一個 .gitignore 模板的項目 如果后續(xù)開發(fā)中有新類型的文件要排除,可以在文件上
3.1.4 創(chuàng)建一份 README.md 文件README.md 文件用來填寫項目的描述和說明,會直接顯示在 Gitlab 的項目文件頁面,方便直接查看項目的描述信息。 3.1.5 在自己的電腦上創(chuàng)建版本庫在項目目錄下
這樣就可以在當前文件夾創(chuàng)建一個 Git 版本控制的庫,同時創(chuàng)建一個分支 master。
3.1.6 提交代碼到本地版本庫
選擇要提交的文件,并填寫描述信息 3.1.7 設置 remote將項目的 SSH 地址復制過來,并將默認的 remote 名稱設置為 origin 如果提示是否關閉獲取標簽,也選擇 No 3.1.8 推送到服務器上的版本庫(push to remote)如果提示該服務器主機是未知的,請選擇是,添加到已知主機列表
3.1.9 創(chuàng)建開發(fā)分支默認情況下,master 分支在 Gitlab 中是保護分支。保護分支只允許 Master 級別以上的用戶才能 push 和 delete。而普通的開發(fā)人員(Developer 級別)是無法提交代碼到 master分支的。
請在 Gitlab 中操作 3.2 我是開發(fā)人員,我要獲取和提交代碼3.2.1 克隆項目在一個空白的項目文件夾下,右鍵 -> Git克隆。
如果提示該服務器主機是未知的,請選擇 3.2.2 檢出開發(fā)分支Git 克隆默認會檢出 master 分支,但是我們需要在開發(fā)分支中工作。 檢查當前所在的分支
到這一步完成,你就可以在本地自由地做開發(fā)了 3.2.3 從服務器的代碼庫更新數(shù)據(jù)請注意,選擇拉取功能,就不需要再執(zhí)行合并。如果是獲取,就需要再執(zhí)行一次合并。兩者的區(qū)別在于,拉取省略了合并的細節(jié)。 3.2.4 沖突與解決出現(xiàn)無法推送 試試拉取,但拉取的時候出現(xiàn)沖突,Merge conflict in test.html 這時候需要先解決沖突
上面那部分的內(nèi)容是本地代碼庫,HEAD 所指向分支的代碼,下面那部分的內(nèi)容是服務器端代碼庫的內(nèi)容
只需要決定最后的內(nèi)容,然后刪除沖突標記,例如,只剩下
刪除完沖突標記后,需要右鍵空白的地方,點擊 Git Add all files now
雙擊沖突的文件 點擊保存
提交 推送
3.2.5 提交和推送代碼到服務器的版本庫請查看 3.2.3 和 3.2.5,注意選擇正確的分支。 請注意:只有項目的 master 權限或者 owner 權限的人才能將代碼推送到保護分支中,master 分支默認是保護分支。 發(fā)起合并請求 選擇需要合并的分支,點擊“比較分支”(需要先比較分支,可以查看到這兩個分支的差異) 描述分支合并請求,然后指派給項目的管理員,項目管理員會收到合并請求的郵件 3.3 分支與標簽3.3.1 創(chuàng)建分支與標簽分支可以基于任意提交(commit)、已有分支、已有標簽中創(chuàng)建。
創(chuàng)建完分支后,記得切換到正確的分支中去工作。 標簽是只讀的,通常只用來記錄特定的歷史時刻,如里程碑版本等,這是為了方便以后檢出特定版本的代碼。 3.3.2 推送分支或標簽到服務器的版本庫使用推送命令,可以將本地版本庫中的分支推送到服務器的版本庫中。如果要推送標簽,請勾選 3.3.3 分支合并選擇要合并到當前工作分支中的分支,例如當前所在的分支是 master,選擇 develop,則會將 develop 中的代碼合并到 master 中。
4 Gitlab 基本功能4.1 為項目寫 WiKiWiKi 可以放項目的相關說明文檔,包括部署手冊,使用手冊等等。 Gitlab 的 Wiki 使用了 Markdown 格式(是一種輕量級標記語言,可以使用易讀易寫的純文本格式編寫出排版漂亮的文檔) 4.2 查看項目的標簽信息在儀表盤中,點擊項目 5 高級功能5.1 從SVN遷移到GitGit 最為重要的特性之一是名為 使用 TortoiseGit 的 Git 克隆,選擇從 SVN 版本庫 將代碼克隆下來后,再設置下 Git 代碼庫的 remote,然后推送過去就可以了。 5.2 從 TFS 遷移到 Git需要使用工具 git-tfs,下載地址在這里 https://github.com/git-tfs/git-tfs/releases 請注意 v0.20.0 版本不支持 TFS 服務器是 2008 版本,如果是 TFS 2008,請選擇 v0.19.2。 需要將 git-tfs 文件目錄添加到環(huán)境變量。 還需要再安裝 TFS Team Explorer。如果服務器是TFS 2008版本,必須確保自己的電腦上只能安裝 TFS Team Explorer 2008,如果安裝了 TFS Team Explorer 2013,則仍然會提示不支持 TFS 2008,無法正確使用 git-tfs。可以切換到虛擬機中,只安裝 TFS 2008 中。 在 Git Bash 中輸入如下命令
test_project 為項目在 TFS 上的名稱,http://192.168.8.25:8080 為 TFS 的服務器地址。 5.3 比較版本差異右鍵,Tortoise Git -> 顯示日志 按 Ctrl 鼠標左鍵選擇兩個版本,右鍵選擇比較差異 右鍵選擇要比較差異的文件,選擇比較差異 TortoiseGit 可以比較 Word 文件的差異 文本文件的差異比較是這樣的 5.4 刪除分支當我們將分支合并到主分支,或者放棄該分支的時候,可以對分支進行刪除操作。 在 TortoiseGit 上進行分支刪除操作非常簡單,首先打開 “CheckOut/Switch” 對話框,通過 “Switch to Branch” 更多按鈕打開分支列表,或者通過菜單 “Browser References” 打開分支列表(默認該菜單是隱藏的)。選擇相應的分支,單擊右鍵,選擇刪除。 注意:
5.5 重置代碼到以前的版本當我們發(fā)現(xiàn)當前的代碼有問題,想回退到之前的版本時,可以使用重置版本。在項目目錄下,
進入日志信息窗口,選擇指定的版本
5.5.1 重置類型,soft, mixed, hard 的區(qū)別soft 不改動工作區(qū)和索引 假設有一些 commits
HEAD 指向 C, 并且暫存區(qū)(stage,或稱為 index)matches C. 當使用 mixed 保持工作區(qū)不變,重置索引 當使用 (如果不知道怎么選,默認使用 mixed) hard 重置索引和工作區(qū)(丟棄所有本地變更) 當使用 6 Eclipse 中使用 EGit6.1 檢出項目File/Import 6.2 更新和推送數(shù)據(jù)6.2.1 獲取數(shù)據(jù)(fetch)
Gerrit 是基于 Git 的代碼審核軟件 選擇遠程代碼庫 自定義選擇要獲取的遠程分支,該圖是遠程倉庫中的所有 fetch 只是把服務端的代碼更新,放到本地的代碼庫中,還需要與本地分支合并,才能真正將代碼更新到工作目錄中。 分支的合并也是在這里操作,注意上圖中,當前是 master,然后要把 origin/master 合并到 master 中
6.2.2 推送(push)如果要刪除分支,也可以在這里操作,Add delete ref specification 6.2.3 Fetch from Upstream, Push to UpstreamGit 可以同時設置多個遠程分支,這里的 Upstream 可以簡單的理解成是默認的遠程分支,因為代碼的版本歷史,就像溪流不斷向前,因此把代碼源稱為 Upstream(因為本地的代碼 clone 自這里)。 6.3 解決沖突
修改左邊的本地數(shù)據(jù),修改好后
然后右鍵點擊此沖突文件
再次將文件加入索引控制,此時文件已經(jīng)不是沖突狀態(tài),并且可以進行提交并 push 到服務器端。一定要重新 commit,并 push 到服務端,才算真正解決沖突。 6.4 分支和標簽創(chuàng)建分支 創(chuàng)建標簽 6.5 reset 到某個版本 |
|
來自: hello_worldw6 > 《工具》