一、Git是一個分布式的代碼版本管理工具。類似的常用工具還有SVN,CVS。最大的特點也是優點在於提供分布式的代碼管理
1、分支代碼只有一份!
使用過svn的童鞋想必都知道,當我們要開發一個新功能或者增加一個新版本或者修改一個復雜bug的時候,通常需要copy整份代碼到本地一個目錄,然后添加到svn服務器上進行代碼管理。
而Git不同,Git可以創建許多branches,每個branch都是獨立的,當我們需要修改代碼的時候,commit也只是對本地倉庫的修改。如果使用SourceTree,我們會發現在工具欄的Git Flow功能,已經很好的為此做了准備。
2、log在本地!
svn的log都是存儲在服務器上的,當我們要查閱修改記錄的時候,必須要能夠連接上遠程服務器,並且具有權限。而Git不同,Git對於本地倉庫的修改記錄都是在本地上的,方便查閱。
3、合並代碼更加方便!
因為Git支持本地無限Branches,當我們個體在本地創建多個branches用於不同目的的時候(修改,新增,探索),合並一份代碼顯然要比svn合並一堆工程copy更加簡單。
4、更加安全!
Git的commit命令不同於SVN,commit只是對本地倉庫代碼的一次更新。當需要提交到master遠程倉庫,或者其他遠程分支倉庫的時候,需要使用push功能。雖然增加了一個過程,卻可以防止隨意修改導致后期合並出現大問題的風險。
在用戶工作的時候,從本地倉庫修改文件(modified),寫入git的暫存區域(staged),將暫存區域的內容提交到本地倉庫(committed)。這一系列的工作都是在用戶本機的本地倉庫上進行的。當你將本地的倉庫push到遠程服務器上的倉庫之前,遠程倉庫里是沒有你的工作成果的。
5、目錄更加簡潔!
在Git本地倉庫根目錄,只有一個.git文件,它包含了所有的管理信息。而SVN想必大家都知道,每個子目錄下都有噁心的.svn。這個當需要修改文件沖突等問題時,就需要考慮了。肯定是一個文件簡單。
二、安裝
在進行安裝前,要說一下,Git和SVN一樣,都需要創建一個服務器的,他們都可以創建自己的版本管理服務器。對於個人和小團隊來說,使用托管服務器可能更合適。
常見的有Github 和 Bitbucket。Github沒有個人免費倉庫使用,代碼放上去就是開源的。
Bitbucket的個人倉庫相關頁面已經基本漢化了。注冊流程也比較簡單。
安裝過程:
1,下載Git installer,地址;
http://git-scm.com/downloads
2,下載之后打開,雙擊.pkg安裝
3, 打開終端,使用git --version或者which git命令查看安裝版本,有就是安裝成功了
4,創建一個全球用戶名、全球郵箱
git config --global user.name "shengyao"
git config --global user.email "MY_NAME@example.com"
5、安裝成功后打開終端
cd ~進入根目錄
輸入命令ssh-keygen生成ssh-key,如果有提示,一直按回車

6、將SSH key添加到GitHub。登錄到GitHub頁面,Account Settings->SSH Public Keys->Add another key
將生成的key(id_rsa.pub文件)內容copy到輸入框中,save。
commd+shift+g進入/Users/chen/.ssh/就可以看得見私鑰和公鑰
私鑰的名字是 id_rsa,是服務器確定你身份的唯一憑證。
公鑰的名字是id_rsa.pub。把這個文件發給倉庫管理員,倉庫管理員會把這個公鑰放到服務器上,以后git就通過上面的私鑰跟服務器交互了。如果使用github就是自己把公鑰內容添加上去
7、找一個目錄執行git clone http://xxx.git(從服務器端克隆git庫,當然這個要服務器管理員給你權限和帳號),以后xxx目錄就是一個git目錄,可以在這個目錄下執行git操作
三、
linux基礎命令
sudo -s
獲取絕對用戶權限
cd xxx
進入xxx目錄
ls (-a/-A)
顯示當前路徑下所有文件(隱藏的)
pwd
顯示當前絕對路徑
mkdir xxx
創建文件夾xxx
man xxx
查看xxx命令手冊
然后介紹下Git基礎命令的含義;
clone
克隆遠程倉庫
init
初始化倉庫
remote
連接遠程倉庫
pull
從遠程倉庫下拉獲取新數據
push
將本地倉庫新增或修改文件上傳到遠程倉庫
add
添加文件或者修改文件,commit以及push之前使用
log
當前倉庫提交過的日志信息
status
當前倉庫版本狀態
commit
提交到當前倉庫中
branch
分支命令,相關增刪查操作
checkout
使用遠程倉庫最后一個版本完全覆蓋當前倉庫內容/選擇分支branch
diff
對比版本內容
merge
合並版本內容
參考: