Git是分佈式版本管理系統
Svn是集中式版本管理系統git
git速度快,適合大規模協同開發github
什麼是分佈式版本管理系統緩存
假若有10我的,每一個人的代碼庫都是獨立的,本身想進行代碼提交回滾均可以,無需連接中央服務器,無需聯網,因此git是本地開發還能夠連接中央服務器與別人交換信息服務器
Git生態curl
Git是分佈式版本管理系統
Gitlab 是一個git的私有庫的解決方案
Github 是git公有庫的解決方案分佈式
Git的原理
Git有四個區域svn
本地倉庫,暫存區域,工做目錄是一個區域,(就是上一部咱們建立的目錄test)fetch
使用git init之後這個目錄就包含了這三個區域url
遠程倉庫就至關於svn的中央倉庫spa
GIT的四種狀態
Git如何對版本進行管理?
Git會對它管理的文件打一個標識這個標識就是四種狀態(每一個標識處於哪一種狀態)
- Untarcked狀態(未被追蹤)若是一個文件第一次放到git庫的工做目錄裏那麼它叫作未被追蹤的文件處於未被追蹤的狀態(這個文件尚未歸入版本管理)
- staged狀態 (以暫存)使用git add 把這個文件推到暫存區域,這個文件也進入了staged狀態
- Unmodifile狀態 (未被修改)使用 git commit把文件提交到本地倉庫,文件也就進入了未被修改的狀態(全部文件推送到本地倉庫都會變爲未被修改的狀態)
- Modifile狀態(已修改)若是對文件進行了編輯,文件會從爲被修改的狀態變爲已修改的狀態已修改的文件會從本地倉庫從新拉回到工做目錄裏文件修改完成在進行提交,造成循環
GIT安裝
注意不要使用git1.8如下版本,推薦使用2.7版本
安裝依賴 yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker 公網下載git wget https://github.com/git/git/archive/v2.7.4.zip 解壓文件 unzip v2.7.4.zip (若是沒有unzip需用yum下載) 進入目錄 cd git-2.7.4 編譯安裝 make prefix=/usr/local/git all make prefix=/usr/local/git install rm -rf /usr/bin/git ln -s /usr/local/git/bin/git /usr/bin/git 查看版本 git --version
GIT初始化
新建目錄 mkdir /root/test 初始化 cd /root/test git init (初始化以後這個目錄就被git的版本控制) 添加版本庫的用戶信息(就是在提交的時候記錄了是誰提交的和他的郵箱) git config --global user.name "wk" (提交名字) git config --global user.email xxxxxxxx@163.com (提交郵箱) git config --list (查看提交的信息)
GIT經常使用命令
git add 加入暫存(索引區) git status 查看狀態 git status-s 狀態概覽 git diff 還沒有暫存的文件 git diff --staged 暫存區文件 git commit 提交更新
git commit -m "first commit" 第一次提交
git reset 回滾 #--soft 緩存區和工做目錄都不會被改變 --mixed 默認選項。緩存區和你指定的提交同步,但工做目錄不受影響 --hard 緩存區和工做目錄都同步到你指定的提交 git rm 從版本庫中移除 git rm --cached README 從暫存區中移除 git mv 至關於執行 mv ,git rm ,git add 三個命令
分支管理
正常開發時不能使用master分支,會形成代碼提交混亂
建立分支git branch
git branch 分之一
切換分支git checkout
git checkout 分之一
git branch -v (查看信息) git branch -d (刪除分支) git checkout (切換分支) git checkout --文件名 撤銷 git merge (代碼合併) git merge lianxi (在master上操做合併的是聯繫的分支) git branch --merge(查看哪些分支已經被合併過來了) git branch --no-merge (查看沒有被合併過來了分支)
Git遠程管理
git clone 把遠程的代碼庫拉到本地
git remote -v (查看遠程庫的地址和庫的名字)
git push origin 分之一 (把本地的庫推到遠程倉庫origin是庫名分之一是分支名)
git fetch origin 分之一 (把遠程的庫的下載本地)
git tag (添加標籤)git tag -a v1.0 -m "描述"