本文是一個入門級的使用教程,簡單介紹最基礎的命令,專為想用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 [email protected]:project new_project
此命令會以ssh方式連接10.0.0.2,如果第一次連接,會詢問是否信任該服務器,輸入yes後。然後輸入code用戶的密碼就可以了。//注,原文作者說[email protected]:project這裡需要home目錄,其實不需要,這裡親測[email protected]:/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 [email protected]:project master
然後輸入code用戶的密碼。master不是目錄名,具體含義本文不作解釋。
如果本機就是服務器,那麼IP地址可以寫為localhost或127.0.0.1。
如果覺得每次輸入[email protected]:project很麻煩,可以為這個URL取個別名my_server:
git remote add my_server [email protected]:project
這樣前一條git push命令可以寫作:
git push my_server master
好了,入門級介紹就結束了。
更多閱讀:
Git使用教程與基本原理 http://www.linuxidc.com/Linux/2013-05/85065.htm
《Pro Git》中文版 PDF http://www.linuxidc.com/Linux/2013-05/85066.htm