引子
Git應該是目前最火熱的源代碼管理軟件,雖然是從Linux中走出來的,但在Windows端的表現也是非常搶眼,大有取代SVN之勢。
但是剛開始用Git的時候,總感覺不是很順手,沒有SVN好用,在SVN的世界里最出名的客戶端管理工具TortoiseSVN,讓我們的開發工作變得異常舒適。雖然Tortoise公司也出了tortoisegit,但因為剛開始對Git的工作原理不是很熟悉,再加上對Linux的白痴水平,結果就是各種不適應。最近接到公司內部一個小工具的開發任務,因為主要是我一個人開發,可能會在家里進行測試,衡量在三,決定使用Git來管理,其實對於這種項目SVN是最適合的工具,但這次主要出於學習Git的出發點來考慮。這篇文章說到底是一篇學習Window下Git開發環境搭建的筆記。
軟件先行
目前windows平台有兩個模擬*nix like運行環境的工具:cygwin,msys;Git在cygwin,msys下都有相應的移植版本。現在WIndows下有非常多的Git用戶,但Git為什么不出一個Windows Native版呢?雖然我沒看過Git的源代碼,但網絡上有研究過的高人講,Git里面使用了大量的*nix平台的native api,而這些API在Windows下是沒有的,所以必須要cygwin、msys這樣的一個蹭層來滿足軟件移植的要求。msysGit上目前Windows上用得非常多的一個基於msys平台的Git移植版本,但個人覺得Cygwin的命令行窗口的功能要比msys好很多,而且Cygwin 下很容易獲得用到的開源工具。當然這個要仁者見仁了,總之你覺得那個好就用那一個。
這里主要介紹一下Cygwin下Git的安裝與配置。
Cygwin安裝
Cygwin 的安裝非常簡單,先在其官方網站 http://www.cygwin.com/下載安裝程序—一個只有幾百KB的setup.exe文件,然后即可開始安裝。
(1) 安裝過程中會讓用戶選擇安裝模式:通過網絡安裝、下載后安裝或者通過本地軟件包緩存(安裝時自動在本地目錄下建立的軟件包緩存)安裝。如果是第一次安裝 Cygwin,因為本地尚沒有軟件包緩存,當然只能選擇從網絡安裝,
(2) 選擇安裝目錄,默認為 C:\cygwin ,如下圖所示。這個目錄將作為 Cygwin shell 環境的根目錄(根卷),Windows 的各個盤符將掛載在根卷的一個特殊目錄之下。
(3) 設置本地軟件包緩存目錄,默認為setup.exe 所處的目錄,
(4) 設置網絡連接方式是否使用代理等,如圖所示。默認會選擇第一項:“直接網絡連接”。如果一個團隊有很多人要使用 Cygwin,架設一個能夠提供軟件包緩存的 HTTP 代理服務器會節省大量的網絡帶寬和大量的時間。
(5) 選擇一個 Cygwin 源,如圖所示。如果在上一個步驟中選擇使用 HTTP 代理服務器,就必須選擇 HTTP 協議的 Cygwin 源。
(6) 從所選的 Cygwin 源下載軟件包索引文件,然后顯示軟件包管理器界面,我們要在這一步選擇安裝Git相關的軟件包。默認安裝的 Cygwin 沒有安裝 Git 軟件包。如果在首次安裝過程中忘記通過包管理器選擇安裝 Git 或其他相關軟件包,可以在安裝后再次運行 Cygwin 的安裝程序 setup.exe 。當再次進入Cygwin 包管理器界面時,在搜索框中輸入 git,這里我們需要安裝下面幾個軟件,
- git
- git-completion: 提供 Git 命令的自動補齊功能。安裝該軟件包時會自動安裝其所依賴的 bash-completion 軟件包。
- vim: Git 默認的編輯器。
- openssh: SSH 客戶端,為訪問 SSH 協議的版本庫提供支持。
Cygwin 的配置和使用
運行 Cygwin后會進入 shell 環境並見到熟悉的 Linux 提示符,可以通過執行 cygcheck 命令來查看 Cygwin 中安裝的軟件包的版本。例如,查看 Cygwin 軟件包本身的版本:
cygcheck -c cygwin
Cygwin 中訪問 Windows 的各個磁盤目錄。首先,我們在Cygwin中執行mount這個命令,
也就是說,在 Cygwin 中以路徑 /cygdrive/c/Windows來訪問Windows 下的 C:\Windows 目錄。
設置Cygwin的Home目錄
修改 Cygwin 啟動的批處理文件(如:C:\cygwin\Cygwin.bat ),在批處理的開頭添加如下的一行代碼,就可以防止其他軟件在 Windows 引入的 HOME 環境變量被帶入到 Cygwin 中。
Set HOME=d:\cygwin\home //這個根據你自己的目錄來設置
命令行補齊忽略文件名大小寫
Windows 的文件系統忽略文件名的大小寫,在 Cygwin 下最好對命令行補齊進行相關設置,以忽略大小寫,這樣使用起來更方便。編輯文件 ~/.inputrc ,在其中添加設置“set completion-ignore-case on”,或者取消已有的相關設置前面的井(#)號注釋符。修改完畢后,再重新進入 Cygwin,這樣就可以實現命令行補齊對文件名大小寫的忽略。
Git配置
1. 由於在windows平台下,所以可以禁止Git對文件權限的跟蹤
git config --system core.fileMode false
2. 解決Git命令輸出中文文件名的顯示問題
git config --system core.quotepath false
3. Git命令輸出中開啟顏色顯示
git config --system color.ui true
4. 配置username和email
git config --global user.name "Jim" git config --global user.email Jim@gmail.com
5. 通過命令來查看Git設置
git config -l
可以得到如下的結果,
user.name=Jim user.email=Jim@gmail.com color.ui=true core.filemode=false core.quotepath=false core.repositoryformatversion=0 core.bare=false core.logallrefupdates=true core.ignorecase=true credential.helper=cache --timeout=3600
6. 配置alias命令別名
git config --system alias.st status git config --system alias.ci "commit -s" git config --system alias.co checkout git config --system alias.br branch git config --system alias.ll "log --pretty=fuller --stat --graph --decorate" git config --system alias.ls "log --pretty=oneline --graph --decorate" git config --system alias.ss "status -sb"
Git訪問SSH 服務
這里的SSH還是指Cygwin里面的SSH,也就是OpenSSH。這塊其實可以參考一下GitHub上的幫助頁面https://help.github.com/articles/generating-ssh-keys
1) 生成SSH密鑰對
ssh-keygen -t rsa -C "jim@gmail.com"
你會看到如下的輸出:
Generating public/private rsa key pair. Enter file in which to save the key (/home/eason.wu/.ssh/id_rsa): Created directory '/home/eason.wu/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/eason.wu/.ssh/id_rsa. Your public key has been saved in /home/eason.wu/.ssh/id_rsa.pub. The key fingerprint is: 58:7d:74:d9:d6:52:79:24:d7:18:e4:dd:bd:03:28:94 jim@gmail.com The key's randomart image is: +--[ RSA 2048]----+ | .. ..=BB| | .E ..o+=O| | .......o=| | o .. . .| | . S o | | .| | | | | | | +-----------------+
2) 連接GitHub
這部分可以參考 https://help.github.com/articles/generating-ssh-keys
3) Clone項目
小結
利用Git來進行源代碼管理是一個長期學習的過程,對於Git的理解也必須在不斷的使用中體會。 總之, 每天進步一點點。