今天是要讓各位入坑,對坑敬謝不敏的就可以離開了。
專案,不管是哪一種,你可能有:
- 改了之後不滿意,卻忘了備份
- 要和別人共同編輯,結果改了共同的地方無法整合
- 到了另一臺電腦,卻不知道要更新哪些部份,最後只好整個複製過去
- 族繁不齊備載
所以我們要怎麼辦?做詳細的記錄?
但是,比起人腦,電腦在記憶方面顯然更可靠,為什麼不把這個工作交給它呢?
所以我們有了版本控制(revision control)。
你如果之前有所耳聞,大概還會知道這類軟體有哪些,CVS啦、subversion啦。
而今天我要介紹的是......GIT!
嗯,那選上它的理由是什麼?因為當初在看資料的時候,發現它是最新的,想必在應用上會比它的前輩還好。(不然你創了新工具是為了什麼?)
另外,GIT允許你離線管理,這對於不想上傳程式碼到SourceForge或GoogleCode的我來說很好。
嗯?為什麼我不想上傳?因為這類服務通常會要求你使用特定的授權,更簡單的來說,就是你要公開源始碼。
很遺憾,我是個自私的人,我怎麼可能上傳???
話又說回來,其實我目前寫的程式不過也是N流的程度就是了,還是別誤人子弟吧...雖然說是這樣,但我最近要在學校和房間跑來跑去,偏偏我又是桌機派的,所以要怎麼辦呢?
找找商業性網站?要付錢欸!
(原本是分兩句,不過我懶得傳兩張圖就是了)所以我又把GIT封印了許久,直到...某個廣告。
Bitbucket宣稱免費,而且似乎空間無上限。
不過我的商人觀點告訴我,這只是唬人的,等適當的時機一到,該付錢的還是要付錢。
(像之前mediafiles一開始也是說無廣告,結果最後還是廣告外加封JDownloader,還好我早就學會不相信宣稱這鬼東西)
雖說如此,不過,拿來當練習還是不錯的,所以我們就開始正文吧!
首先,請安裝Windows版的GIT(我猜10個來這邊的人9個是用Windows)。
標準安裝、
進階圖形介面安裝時,它會問你非常有品味的問題,好好思考再下決定。
其中,我個人對於
換行這件事都是自己來,所以我選
都不轉換。
裝好後,你的桌面會出現Git Bash的捷徑,還在猶豫什麼?點下去??!
文字介面是比較討厭,不過,我上面不是有弄一個連結嗎?自己去下載啦!
GIT所提供的路徑,風格和Windows不同,我想你也注意到了:沒有磁碟代號、""被換成"/"。
(比較專業講法是Unix-like風格)而我個人相信,你既然來看,就該已經有專案了,所以你為什麼不快點移動到那個位置呢?
$ cd [專案路徑](提醒一件事,資料夾有空格的請在空格之前加上)
$ git init
$ git add [你要管理的檔案](你可以用*表示任意值,所以可以直接打git add *把一切都加進去)如果你在安裝時都選預設值,那你可能會看到那一長串訊息,簡單來說,就是有些檔案的換行設定在
管理庫中會被
改變,不過你
目前檔案則保持
原樣。
$ git commit -m "註解"或是
$ git commit輸入第一個的肯定看不到這個畫面,這是一款叫Vim,只能用鍵盤操作的文字編輯器,所以如果你開始害怕了,快點拉到上面找一個喜歡的圖形介面安裝。
不過,你毋需了解Vim全部的用法,按I在目前位置開始打字;按O是開一新行打字;按A是在目前位置的右邊開始打字。
所以你打完了?或是你按錯想反悔?按Esc結束打字模式,或是,用上下左右鍵移動。
哦!對了,為什麼你會來這邊?因為GIT要求你為這次的更改下一個註解,另外,也對你簡報剛剛你加了哪些東西進去。
由於我們是開新的管理庫,所以可以叫它new之類的。
所以你接著會問:我要怎麼離開?
按Esc離開打字模式,然後輸入:qw確認變更,而如果你反悔,改用:q!
本機的管理庫已經搞定了,接著是網路上的,也就是前面提到的Bitbucket。
當然,你要有個帳號,去申請吧!
申請完後,它會要求安全連線的東西,你可以單純的用密碼,或是比較強的ssh。
我們來製做一個RSA金鑰吧!(
官方/英文)
RSA加密演算法是個數學的應用,簡單來說就是兩數相乘容易,但因數分解難,所以我們可以公開商數,但保留那兩個合出商數的質因數。
$ cd ~
$ mkdir .ssh我們在
家目錄中建立一個叫.ssh的資料夾,等一下我們會把金鑰和設定檔放這邊。
$ ssh-keygen -t rsa它會問你要存成哪個檔案,我是因為已經有一個了才另外指定,不然,直接按Enter就好了。
接著是passphrase,你可以理解成密碼,至於為什麼不叫passphrase?你可以考慮寫信問作者們。
(我最後發現我路徑多打了個點,用./id_rsa2就可以了)設定檔的名子叫config,放在.ssh中。
啊!不過剛剛那個
家目錄是在哪邊?Win7/Vista是在 C:Users[使用者名稱];前幾版的Windows在C:Documents and Settings[使用者名稱]
檔案內容:
Host bitbucket.org
IdentityFile ~/.ssh/[privatekeyfile]請把你剛剛建好的金鑰名稱填入,預設是id_rsa
而為了讓GIT能一開始就啟用金鑰,我們要設定Git Bash的行為。
在
家目錄下建立一個叫 .bashrc 的檔案。
啊,是的,我知道Windows會哀嚎,說你沒打檔名之類的。
$ echo "" >> ~/.bashrc然後,打開記事本,或你喜歡的文字編輯器,把.bashrc拉進視窗中,你應該就可以編輯了。
檔案內容:
SSH_ENV=$HOME/.ssh/environment
function start_agent {
echo "Initialising new SSH agent..."
/usr/bin/ssh-agent | sed 's/^echo/#echo/' > ${SSH_ENV}
echo succeeded
chmod 600 ${SSH_ENV}
. ${SSH_ENV} > /dev/null
/usr/bin/ssh-add;
}
# Source SSH settings, if applicable
if [ -f "${SSH_ENV}" ]; then
. ${SSH_ENV} > /dev/null
#ps ${SSH_AGENT_PID} doesn't work under cywgin
ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
start_agent;
}
else
start_agent;
fi(你可以加入別的,像是cd,讓它一開始就移到你想要的資料夾中)存檔後,關掉並重開Git Bash,它會問你passphase,輸入後應該就會成功載入該組金鑰了。
哦,對了,對方還在等你傳送金鑰給他們,不過,如先前所說的,兩個質因數要保密,你要給對方的是id_rsa.pub中的內容。
這樣設定就搞定了,我們接下來只需按照Bitbucket的指示上傳管理庫就行了。
(這會讓你把遠端伺服器命名為origin)那如果同伴要你的程式呢?用clone。
好了,現在你知道你的同伴更新了位在伺服器的管理庫,你要怎麼拿?用pull。
$ git pull origin而有些人習慣步步為營,這時可以考慮用fetch,之後再merge來處理,這方面的差異有
文件解說。
好了,有志向學的少女和少年啊!剩下的,就問問Google吧!
其實,我也還在摸,哇哈哈哈。(被巴飛)