3. Git與TortoiseGit基本操作
1. GitHub操作
本節先簡單介紹 git 的使用與操作, 然後再介紹 TortoiseGit 的使用與操作.
先看看SVN的操作吧, 最常見的是 檢出(Check out ...), 更新 (Update ...), 以及 提交(Commit ...); 相當於有一個伺服器端, 可以多個客戶端進行訪問和操作.
Git是SVN以後的新一代的版本控制系統/協議. 適合於大規模的開源軟體多人協作的開發. 有一個總倉庫(如GitHub,CSDN,OSchina等提供), 每個客戶端都有一個本地倉庫(這個本地倉庫有點對應於SVN的服務端倉庫), 以及一個可以看見的本地專案.
讓我們想想,至少需要有哪些功能.以 GitHub為例,首先,必須得有一個線上倉庫(Repository), 這首先得新建一個倉庫.
然後,登入 GitHub, 在右上角找到 New Repository 或者 加號下拉按鈕(+),點選進入新建倉庫頁面: https://github.com/new, 如下圖所示:
依次填寫倉庫名,以及其他資訊後,點選 "Create repository" 按鈕,即可建立一個線上倉庫. 因為這個倉庫是掛在你的賬號下的,所以可以是任意合法的字元,只要和你的其他倉庫不衝突即可.
倉庫建立成功後,就會進入倉庫預覽頁面, 如下圖所示:
然後,我們可以點選右邊的 HTTPS 連結, 上方的文字框裡面就顯示了 HTTPS協議下的倉庫訪問地址, 可以點選進去全選,也可以點選右邊的複製按鈕複製到剪貼簿. 例如,剛剛建立的專案訪問路徑是:
https://github.com/cncounter/LispGentleIntro.git
是一個以 https:// 開始,以 .git 結尾的 URL,根據提示,叫做 clone URL.
好了,倉庫建立完成,可以進入下一步了.
2. Git使用與操作
如果你偏愛命令列,那麼可以簡單參考下這一小節. 否則,請往下翻,直接看 TortoiseGit使用與操作
2.1 克隆專案(clone ...)
Win+R 快捷鍵開啟執行對話方塊,輸入 cmd
回車, 在 cmd 中(其實在 GitBash中也可以), cd 切換到存放git專案的目錄, 如:
-
Microsoft Windows [版本 6.1.7601]
-
版權所有 (c) 2009 Microsoft Corporation。保留所有權利。
-
C:\Users\Administrator>F:
-
F:\>cd GIT_ALL
然後執行命令: git clone https://github.com/cncounter/LispGentleIntro.git
,就會把專案克隆到當前目錄下, 專案的目錄名字預設為 LispGentleIntro.
-
F:\GIT_ALL>git clone https://github.com/cncounter/LispGentleIntro.git
-
Cloning into 'LispGentleIntro'...
-
remote: Counting objects: 5, done.
-
remote: Compressing objects: 100% (4/4), done.
-
remote: Total 5 (delta 0), reused 0 (delta 0)
-
Unpacking objects: 100% (5/5), done.
-
Checking connectivity... done.
命令列截圖如下:
2.2 提交專案(commit ...)
然後可以 cd
切換到 LispGentleIntro 目錄, 新增或者修改某些檔案.這裡只是模擬一下操作. 實際情況可能是 使用 Eclipse 匯入專案(不要拷貝,Copy...)進行一些編輯, 然後將當前目錄下的所有有變動的檔案告訴索引庫,接著提交到本地倉庫.
-
F:\GIT_ALL>cd LispGentleIntro
-
F:\GIT_ALL\LispGentleIntro>echo some content >> cncounter.txt
-
F:\GIT_ALL\LispGentleIntro>echo by cncounter >> README.md
-
F:\GIT_ALL\LispGentleIntro>git add .
-
F:\GIT_ALL\LispGentleIntro>git commit -m "add some info."
-
[master 86d090f] add some info.
-
2 files changed, 4 insertions(+)
-
create mode 100644 cncounter.txt
提交到本地倉庫有什麼好處呢? 本地倉庫就是一個版本管理庫,我們在編寫程式碼時,如果寫錯了,那麼可能需要 Ctrl+Z 來撤銷,撤銷撤銷,如果很多,而且跨檔案,就很麻煩,可能需要Copy檔案什麼的。 這時候本地倉庫就很有用了. 修改到某個階段,然後就提交到本地倉庫. 可以有效防止丟失,方便回退. 而且,提交到本地倉庫不會影響別人看到的內容(只有本機可見).
2.3 推送專案(push ...)
如果完成到一定程度,那麼可以推送到遠端線上倉庫. 推送之前,請確保你已經設定了全域性的 user.name
和 user.email
, 如果沒有設定,或者不想使用全域性的資訊,可以在當前專案下設定:
-
F:\GIT_ALL\LispGentleIntro>git config user.name "renfufei"
-
F:\GIT_ALL\LispGentleIntro>git config user.email "[email protected]"
接著,可以執行推送(push), 推送就是將已經提交到本地倉庫的那部分內容給推到遠端線上倉庫.(修改了,但沒提交的那部分內容,不會被推送). 執行 git push
命令即可:
-
F:\GIT_ALL\LispGentleIntro>git push
-
Username for 'https://github.com': renfufei
-
Password for 'https://[email protected]':
-
Counting objects: 6, done.
-
Delta compression using up to 8 threads.
-
Compressing objects: 100% (3/3), done.
-
Writing objects: 100% (4/4), 402 bytes | 0 bytes/s, done.
-
Total 4 (delta 1), reused 0 (delta 0)
-
To https://github.com/cncounter/LispGentleIntro.git
-
e8c0fb1..6407079 master -> master
在連線上遠端伺服器之後,會要求你輸入使用者名稱與密碼. 其中,使用者名稱是你註冊GitHub時的賬號,不是郵箱. 接著是密碼,注意密碼是沒有回顯的,也就是為了安全,不告訴你具體輸入了幾個字元,輸入完成回車即可. 截圖如下:
好了,推送完成,這時候用瀏覽器開啟線上倉庫,看看內容是不是已經變了?
2.4 拉取專案(pull ...)
當然,如果多人協作, 或者多個客戶端進行修改, 那麼我們還要拉取(Pull ... )別人推送到線上倉庫的內容下來。 大神們是不推薦使用 pull 命令進行拉取的, 因為封裝了細節(git pull == git fetch + git merge). 對於這群更喜歡用命令列的神們來說, 一切在掌控之中是一種強迫症!!!(開個玩笑, 其實專案成員複雜,約定不好以後, pull 確實會有很多問題,會坑人.)
常規使用,我們執行 git pull
即可:
-
F:\GIT_ALL\LispGentleIntro>git pull
-
Already up-to-date.
當然,因為沒有其他檔案被修改,所以直接提示 已經更新到最新. 常規操作就這些,需要注意的是,和使用SVN的好習慣一樣,你在修改本地內容之前,最好先 pull 一下,減少衝突的可能.
使用 Git命令有時候確實不怎麼方便,特別是每次都要輸入密碼,如果配置 SSH 的方式,又實在是很麻煩.(當然,必須使用 Windows 神器才有方便友好的客戶端圖形介面啦!!!)
關於 TortoiseGit 的安裝請參考 前一小節.
3.1 克隆專案
開啟資源管理器(我的電腦/計算機), 進入規劃好的某個目錄中, 然後在空白處點選滑鼠右鍵, 選擇 TortoiseGit --> 克隆... (Clone...).
彈出克隆專案對話方塊:
在對話方塊的 URL中輸入專案地址,如:
https://github.com/cncounter/LispGentleIntro.git
確定本地目錄,然後點選 確定 按鈕. 等待完成後,點選關閉按鈕即可.
3.2 修改提交專案
專案克隆完成後(可以將克隆 clone 理解為 下載, 檢出 checkout 操作). 修改本地專案中的某些檔案,如 將 README.md
修改為如下內容:
-
LispGentleIntro
-
===============
-
Lisp-符號計算入門指引翻譯
-
<a href="http://cncounter.duapp.com/">天朝計數器</a>
還可以試試增加一些檔案. 如 files.txt
.
然後在本地專案的空白處點選滑鼠右鍵, 選擇 TortoiseGit --> 提交(C) -> "master"... 或: Commit -> "master"....
彈出提交(Commit)對話方塊:
作為好習慣,填寫提交日誌,勾選需要提交的檔案,然後點選 "確定" 按鈕, 即提交到本地倉庫.
3.3 將提交到本地的專案推送到線上倉庫
推送是提交的下一步操作.
在本地專案的空白處點選滑鼠右鍵, 選擇 TortoiseGit --> 推送... 或: Push....
彈出推送(push)對話方塊:
一般保持預設,點選 “確定” 按鈕.
然後彈出推送進度介面, 可能要求你輸入使用者名稱:
確定OK,然後要求輸入密碼:
密碼輸入正確後,OK,顯示推送成功介面:
如果你按照上一小節的設定操作,則輸入密碼以後會記住密碼. 密碼會明文儲存在 C:\Users\Administrator\.git-credentials
這種檔案中, 請小心使用.
3.4 拉取專案(pull ...)
如果本地的專案沒有線上倉庫的新,則需要執行拉取操作(Pull ...).
在本地專案的空白處點選滑鼠右鍵, 選擇 TortoiseGit --> 拉取... 或: Pull....
彈出拉取(pull)對話方塊:
【如果拉取有BUG,請不要使用 rebase, 下載最新的 TortoiseGit 即可】, 進入 拉取進度介面:
然後執行變基:
【如果拉取有BUG,請不要使用 rebase, 下載最新的 TortoiseGit 即可】
然後完成即可.
這應該是 TortoiseGit 的一個BUG, 要解決這個問題,請參考 解決 TortoiseGit 詭異的 Bad file number 問題 (或者可以換回老版本. 如果你沒有出這個問題,那麼,可能是我的機器哪裡損壞了).
4. 更復雜的操作
5. 相關文章
日期: 2014-11-27