Git 是一個開源的分布式版本控制系統(tǒng),是目前世界上最先進、最流行的版本控制系統(tǒng)。可以快速高效地處理從很小到非常大的項目版本管理。特點:項目越大越復(fù)雜,協(xié)同開發(fā)者越多,越能體現(xiàn)出 Git 的高性能和高可用性。
git add 添加文件到暫存區(qū)
git commit 提交文件到本地倉庫
git pull 從遠程倉庫拉取項目到本地
git push 將本地倉庫的新的改變推送到遠程倉庫
git clone 將遠程倉庫復(fù)制到本地
git fetch 抓取
git merge 合并
git clone:是在本地沒有版本庫的情況下,從遠程倉庫克隆一份到本地,是一個本地版本庫從無到有的過程
git pull:是在本地倉庫已經(jīng)存在的情況下,將遠程最新的commits抓取并合并到本地版本庫的過程
git fetch: 從遠程版本庫抓取最新的commits,不會進行合并
git merge:合并
所以git pull = git fetch + git merge
push之前一定要進行本地更新操作。使用git pull命令或者使用git fetch和git merge的命令組合。這時候,可能會出現(xiàn)版本沖突,如果出現(xiàn)的話,需要解決完沖突再進行代碼push。
開發(fā)過程中,我們都有自己的特性分支,所以沖突發(fā)生的并不多,但也碰到過。諸如公共類的公共方法,我和別人同時修改同一個文件,他提交后我再提交就會報沖突的錯誤。發(fā)生沖突,在IDE里面一般都是對比本地文件和遠程分支的文件,然后把遠程分支上文件的內(nèi)容手工修改到本地文件,然后再提交沖突的文件使其保證與遠程分支的文件一致,這樣才會消除沖突,然后再提交自己修改的部分。
特別要注意下,修改本地沖突文件使其與遠程倉庫的文件保持一致后,需要提交后才能消除沖突,否則無法繼續(xù)提交。必要時可與同事交流,消除沖突。
創(chuàng)建一個bug分支,然后進行bug處理,處理完畢后,合并到review分支,組長review成功后才能夠合并到master,合并完成之后刪除bug分支,回到dev分支繼續(xù)開發(fā)。
在公司開發(fā)忘記提交到github托管,在家里又繼續(xù)開發(fā)新的功能,然后到公司昨天的代碼跟你的新功能合并的時候可以用git fecth ---> git rebase,那么他的提交記錄就不會出現(xiàn)分叉,保持了提交記錄的整潔.
用的是github,因為公司比較小,所以沒有自己搭建gitlab,
但是用github的時候代碼一定要用保密的,9$(美元)建立一個倉庫。
1)解決沖突文件時,會先執(zhí)行g(shù)it stash,然后解決沖突;
2)遇到緊急開發(fā)任務(wù)但目前任務(wù)不能提交時,會先執(zhí)行g(shù)it stash,然后進行緊急任務(wù)的開發(fā),然后通過git stash pop取出棧區(qū)的內(nèi)容繼續(xù)開發(fā);
3)切換分支時,當(dāng)前工作空間內(nèi)容不能提交時,會先執(zhí)行g(shù)it stash再進行分支切換;
查看分支的提交歷史記錄:
命令git log –number:表示查看當(dāng)前分支前number個詳細的提交歷史記錄;
命令git log –number –pretty=oneline:在上個命令的基礎(chǔ)上進行簡化,只顯示sha-1碼和提交信息;
命令git reflog –number: 表示查看所有分支前number個簡化的提交歷史記錄;
命令git reflog –number –pretty=oneline:顯示簡化的信息歷史信息;
相同點:git和svn都是版本控制系統(tǒng),兩者都有自己的服務(wù)器。
區(qū)別:
1.git是分布式,svn不是分布式。
2.git把內(nèi)容按元數(shù)據(jù)方式存儲,而svn按文件。
3.git分支和svn分支不同。
4.git沒有一個全局版本號,svn有。
5.git版本號要優(yōu)于svn
解決沖突有三種選擇:
A.放棄自己的更新,使用svn revert(回滾),然后提交。在這種方式下不需要使用svn resolved(解決)
B.放棄自己的更新,使用別人的更新。使用最新獲取的版本覆蓋目標(biāo)文件,執(zhí)行resolved filename并提交(選擇文件—右鍵—解決)。
C.手動解決:沖突發(fā)生時,通過和其他用戶溝通之后,手動更新目標(biāo)文件。然后執(zhí)行resolved filename來解除沖突,最后提交。