( 一)安裝git
$git //可以先通過這個命令,檢查一下當前系統(tǒng)是否已經(jīng)安裝了git
在linux環(huán)境下,安裝git.
操作系統(tǒng)是ubuntu時,可以直接輸入命令:
$sudo apt-get install git
如果是其他Linux版本,可以直接通過源碼安裝。先從Git官網(wǎng)下載源碼,然后解壓,依次輸入:
$./config
$make
$sudo make install
這幾個命令安裝就好了。
在Mac OS X上安裝Git
如果你正在使用Mac做開發(fā),有兩種安裝Git的方法。
一是安裝homebrew,然后通過homebrew安裝Git,具體方法請參考homebrew的文檔:http://brew.sh/。安裝輸入如下:
$/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
第二種方法更簡單,也是推薦的方法,就是直接從AppStore安裝Xcode,Xcode集成了Git,不過默認沒有安裝,你需要運行Xcode,選擇菜單“Xcode”->“Preferences”,在彈出窗口中找到“Downloads”,選擇“Command Line Tools”,點“Install”就可以完成安裝了。
配置和coding的關(guān)聯(lián)
安裝完成后,還需要一步設(shè)置,在命令行輸入:
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
因為Git是分布式版本控制系統(tǒng),所以,每個機器都必須自報家門:你的名字和Email地址。
注意git config命令的--global參數(shù),用了這個參數(shù),表示你這臺機器上所有的Git倉庫都會使用這個配置,當然也可以對某個倉庫指定不同的用戶名和Email地址。
$ssh-keygen -t rss -C "yourmail@example.com" //創(chuàng)建ssh key
密鑰文件創(chuàng)建好后,會在用戶家目錄下創(chuàng)建一個隱藏目錄 .ssh,在.ssh目錄下有2個文件,id_rsa(私鑰文件)和id_rsa_pub(公鑰文件),你需要將公鑰文件中的內(nèi)容拷貝粘貼到 coding“個人賬戶”-“SSH公鑰”中,添加一個新公鑰。
在coding“項目”-“代碼”中,拷貝相應(yīng)的 SSH 方式訪問倉庫中的地址信息(例子中為git@git.coding.net:zhfjyq/xxxxx.git)
$git clone git@git.coding.net:zhfjyq/xxxxx.git
(二)本地使用
$git status
查看當前倉庫狀態(tài),包括當前所處分支,提醒你有何被修改的文件準備被提交,有何文件被修改了,但沒有被add過。
$git branch wangyu //創(chuàng)建新的wangyu 分支
$git checkout wangyu //將當前分支切換到wangyu分支
參考命令:
$git branch //查看當前本地所有分支
$git checkout -b wangyu //切換到wangyu分支,如果沒有就先創(chuàng)建它,然后自動切換到當前
你可以把git的存儲環(huán)境分為:工作區(qū),暫存區(qū),當前分支;三部分
每次工作時,你需要切換到你的分支,
此時你在 webstorm里的各種操作,都是在工作區(qū),即是使工作區(qū)的文件發(fā)生了改變。
通過 add命令,將這些文件加到暫存區(qū),
然后通過commit命令將其提交到當前分支中;
$git add filename
將文件加到倉庫中。每次你對工程中的文件進行了修改,或者新增加了一些文件,都要通過add命令加到倉庫中,才能被后面所提交。
$git commit -m "填寫本次改動說明"
將文件提交到當前分支倉庫中
add 和 commit
解釋一下 add和commit:
一般情況下,要在commit執(zhí)行之前,把需要提交的文件都 add一遍,然后再提交。這樣才可以保證所有最新的修改都提交了。commit時,只會把最近一次add 時的修改內(nèi)容提交,在 add后進行的修改,將不會被提交,需要再次 add才行。
合并分支
$git checkout master //切換當前分支到master
$git merge wangyu --no-ff //合并指定分支到當前分支
$git branch -d wangyu //刪除 wangyu分支
(三)遠程的多人協(xié)作

當團隊多人協(xié)作開發(fā)時,每個人在遠程都有自己的獨立分支,當你從遠程倉庫克隆完時,Git自動把本地的master分支和遠程的master分支對應(yīng)起來了,并且,遠程倉庫的默認名稱是origin。
$git remote -v //查看遠程庫信息
如果要在個人分支上開發(fā),就必須創(chuàng)建遠程origin的個人分支到本地,用這個命令創(chuàng)建本地個人分支:
$git checkout -b wangyu origin/wangyu
建立在遠程的分支,主要有2個作用,一個是供團隊其他人使用,一個是供別人檢查工作進度
多人協(xié)作的工作模式通常是這樣:
首先,可以試圖用
$git push origin branch-name //推送自己的修改;
如果推送失敗,則因為遠程分支比你的本地更新,需要先用
$git pull //將遠程分支內(nèi)容拉下來,試圖合并;
如果合并有沖突,則解決沖突,并在本地提交;
沒有沖突或者解決掉沖突后,再用$git push origin branch-name推送就能成功!
如果$git pull提示“no tracking information”,則說明本地分支和遠程分支的鏈接關(guān)系沒有創(chuàng)建,用命令
$git branch --set-upstream-to branch-name origin/branch-name //建立本地分支和遠程分支的關(guān)系
(四)常用場景解釋
關(guān)于git fetch和git pull
Git fetch origin master //首先從遠程的origin的master主分支下載最新的版本到origin/master分支上
git log -p master..origin/master //比較本地的master分支和origin/master分支的差別
git merge origin/master //進行合并
上述過程其實可以用以下更清晰的方式來進行:
git fetch origin master:tmp //從遠程獲取最新的版本到本地的tmp分支上,之后再進行比較合并
git diff tmp
git merge tmp
git pull:相當于是從遠程獲取最新版本并merge到本地
git pull origin master
上述命令其實相當于git fetch 和 git merge
撤銷本地修改
git reset --hard origin/master
git pull
當本地的修改,改亂了,不想要了,可以通過這個命令,完全恢復(fù)到原程的master 版本
git多用戶提交沖突
場景:用戶UserA修改了文件File1,用戶UserB也修改了文件File1并成功merge到了服務(wù)器上,而UserA和UserB改動了同一個代碼塊,當UserA拉取代碼時git無法merge此改動,就會出現(xiàn)如下錯誤提示,
error: Your local changes to the following files would be overwritten by merge: cn/trinea/appsearch/MainActivity.java
Please, commit your changes or stash them before you can merge.
這時
(1) 如果希望保存本地改動并拉下最新服務(wù)器代碼,手動merge,使用命令如下:
git stash
git pull
git stash pop
git diff -w /xxx/xxx/xxx.js
其中g(shù)it stash表示備份當前工作區(qū)內(nèi)容到git棧中,并使當前工作區(qū)內(nèi)容與上次提交時一致,然后git pull拉取最新代碼,git stash pop表示從Git棧中讀取最近一次保存的內(nèi)容,恢復(fù)工作區(qū)的相關(guān)內(nèi)容,最后git diff表示手動merge你之前沖突的文件
(2) 如果希望服務(wù)器上版本完全覆蓋本地修改,使用如下命令回退并更新:
git reset --hard
git pull