本文是一個入門級的使用教程,簡單介紹最基礎的命令,專為想用git而不知從何下手的苦手準備。git是新流行起來的代碼管理工具,最著名的應用是 linux核心代碼管理。Git比SVN好的地方在於兩點:輕量級、分布式。其中分布式的意思是Git不需要一個中心伺服器,或者說任何一台使用git的電腦都可以當伺服器,建立程式碼程式庫伺服器異常簡單。
本文不重點介紹git的安裝,簡單說一下:在Ubuntu/Debian下直接apt-get:
sudo apt-get install git-core
就OK了。目前為止git沒有為Windows專門寫安裝包,如果要在Windows下使用git,需要cygwin,也不麻煩,但本文就不多做說明了。
以下分兩種應用情境來說明git的使用。1. 個人使用,不用建專門的代碼伺服器。2. 多人維護代碼,需要代碼建伺服器。
1. 個人使用,不用建專門的代碼伺服器。
很簡單。假設你的代碼放在/home/runningon/project目錄下(非空),那麼運行:
git init
git add .
git commit -m "init version"
然後git程式碼程式庫就建立好了,目錄下會多出個.git目錄來。git init就是初始化,git add是標記上要添加的檔案,"."表示目前的目錄,此命令會遞迴標記所有子目錄及檔案。git commit就是把標記上的檔案和修改的檔案commit到git庫裡,-m參數是添加對此次commit的注釋,git要求每次commit都必須有注釋,如果沒有-m參數,將會自動開啟一個編輯器(通常是vi或nano)要求輸入注釋。
以後,如果修改了檔案,則運行
git commit -m "<comments>"
就可以將修改反映到git庫,將<comments>替換為你想要的注釋。
如果添加了代碼檔案new_file,則在commit之前運行
git add new_file
如果想把程式碼複製品一份出來,進入你想複製到的目錄運行:
git clone /home/runningon/project new_project
注意git clone後有兩個參數,第一個參數是原始碼目錄,也就是含有.git檔案夾的目錄。第二個參數是要複製到的目錄,如果省略,則會在目前的目錄下建立一個與原始碼目錄同名的目錄,在本例中就是./project
複製出的目錄包含複製前目錄的所有代碼修改資訊,是完全獨立的,即之後在new_project下的所有修改與commit都不會影響原project。
2. 多人維護代碼,需要代碼建伺服器。
假設代碼伺服器的IP是10.0.0.2。git預設用ssh作為網路通訊協議,所以在伺服器10.0.0.2上安裝之:
sudo apt-get install ssh
然後添加一個使用者,比如code,home目錄是/home/code。以code使用者登入10.0.0.2,建立一個/home/code/project目錄來存放代碼。在/home/code/project目錄下運行:
git --bare init
一條命令就把伺服器就建好了,小菜吧。--bare命令是告訴git目前的目錄不含代碼,以後commit時只用儲存修改就可以了。
在本機下載代碼與情況1一樣:
git clone /home/code/project new_project
如果要在另外的電腦下載代碼,運行:
git clone code@10.0.0.2:project new_project
此命令會以ssh方式串連10.0.0.2,如果第一次串連,會詢問是否信任該伺服器,輸入yes後。然後輸入code使用者的密碼就可以了。//注,原文作者說code@10.0.0.2:project這裡需要home目錄,其實不需要,這裡親測user@192.168.0.136:/media/Disk1_150G/tommy-test,即使用“使用者名稱@絕對路徑”的方式也是可以的。
注意git clone後第一個參數的格式,為<使用者名稱>@<伺服器IP>:<相對路徑>,其中<相對路徑>是指相對於<使用者名稱>所在home目錄的相對路徑,比如此例中,code的home目錄是/home/code,那麼此例的路徑實際為/home /code/project。<相對路徑>不能留空或省略,如果代碼確實是在home目錄下,則<相對路徑>是".",不含雙引號。要提醒一下的是,如果程式碼程式庫是空的,會給出警告,不必理會。
如果在new_project裡修改了代碼,且添加了新代碼new_file,想把這修改commit到伺服器上,先運行:
git add new_file //這裡也可以使用git add . 來完成,應為伺服器上只會儲存修改,所以全部上傳也可以。
git commit -m "<comments>"
將<comments>替換為你的注釋。這樣代碼就commit到當前機器的new_project了。如果想commit到伺服器上,則在new_project目錄下運行:
git push code@10.0.0.2:project master
然後輸入code使用者的密碼。master不是目錄名,具體含義本文不作解釋。
如果本機就是伺服器,那麼IP地址可以寫為localhost或127.0.0.1。
如果覺得每次輸入code@10.0.0.2:project很麻煩,可以為這個URL取個別名my_server:
git remote add my_server code@10.0.0.2:project
這樣前一條git push命令可以寫作:
git push my_server master
好了,入門級介紹就結束了。
更多閱讀:
Git使用教程與基本原理
《Pro Git》中文版 PDF