1)git是分佈式的,svn是集中式的。(最核心)linux
2)git是每一個歷史版本都存儲完整的文件,便於恢復,svn是存儲差別文件,歷史版本不可恢復。(核心)git
3)git可離線完成大部分操做,svn則不能。web
4)git有着更優雅的分支和合並實現。數據庫
5)git有着更強的撤銷修改和修改歷史版本的能力vim
6)git速度更快,效率更高。ssh
基於以上區別,git有了很明顯的優點,特別在於它具備的本地倉庫。分佈式
1)工做目錄svn
工做目錄是對項目的某個版本獨立提取出來的內容。這些從 Git 倉庫的壓縮數據庫中提取出來的文件,放在磁盤上供你使用或修改。工具
2)暫存區域gitlab
是一個文件,保存了下次將提交的文件列表信息,通常在 Git 倉庫目錄中。有時候也被稱做`‘索引’’,不過通常說法仍是叫暫存區域。
3)Git 倉庫目錄
是Git 用來保存項目的元數據和對象數據庫的地方。這是 Git 中最重要的部分,從其它計算機克隆倉庫時,拷貝的就是這裏的數據。
1)經常使用選項
add 把工做目錄內容添加到暫存區域
branch 查看和設置分支
checkout 切換分支和撤銷
clone 克隆遠程倉庫
commit 把暫存取餘提交到倉庫
init 初始化工做目錄
log 查看提交的日誌信息
merge 合併分支
pull 拉取遠程倉庫
push 把本地內容推送到遠程倉庫
reset 撤銷操做
status 查看文件所處的狀態
2)使用
建立和初始化目錄
mkdir /git_li
cd /git_li
git init
建立文件進行測試
echo "test" >test
git add . #把工做目錄下的全部文件提交到暫存區域
git commit -m "v1" #把暫存區域的內容提交到倉庫並標識爲v1版本
git config --global user.email "you@example.com" #進行認證
git config --global user.name "Your Name"
再次提交
查看版本信息
gitlog
屢次提交併設置爲不一樣版本
echo "123" >> test
git add .
git commit -m "v2"
[master 4c1ef68] v2
1 file changed, 1 insertion(+)
echo "123" >> test
git add .
git commit -m "v3"
[master 7cb610b] v3
切換至V1版本
git reset --hard 8a3e5e13ab
工做目錄回滾
git checkout -- test #進行工做目錄狀態撤銷
暫存區域回滾
git reset HEAD test #不提交至倉庫
git checkout -- test #工做目錄中撤銷
查看歷史版本信息
git reflog
3)git分支
查看分支
git branch
建立分支
git branch test
切換分支
git checkout test
合併分支
git merge test
GitLab 是一個用於倉庫管理系統的開源項目,使用Git做爲代碼管理工具,並在此基礎上搭建起來的web服務。
可經過Web界面進行訪問公開的或者私人項目。它擁有與Github相似的功能,可以瀏覽源代碼,管理缺陷和註釋。能夠管理團隊對倉庫的訪問,它很是易於瀏覽提交過的版本並提供一個文件歷史庫。團隊成員能夠利用內置的簡單聊天程序(Wall)進行交流。它還提供一個代碼片斷收集功能能夠輕鬆實現代碼複用。
1)下載安裝包
wget --content-disposition https://packages.gitlab.com/gitlab/gitlab-ce/packages/el/7/gitlab-ce-8.9.5-ce.0.el7.x86_64.rpm/download.rpm
2)修改ip
vim /etc/gitlab/gitlab.rb
external_url 'http://192.168.52.233'
3)從新配置
gitlab-ctl reconfigure
gitlab-ctl start
啓動gitlab時80端口不可被佔用
4)gitlab使用
git clone http://192.168.52.233/root/test.git
git push -u origin master
5)linux免祕鑰使用gitlab
ssh-keygen 生成祕鑰
公鑰粘貼到gitlab的ssh-keys中
拉取gitlab項目
git clone git@192.168.52.233:root/test.git