Git是什么
git是目前最先進的分布式版本控制系統(tǒng),它的核心架構(gòu)如下圖所示,分為四個核心區(qū)域膝藕。git的常用命令主要是關于這四個區(qū)域式廷。
本地工作區(qū)-work
本地工作區(qū)就是我們實際電腦中的文件夾以及文件。緩存區(qū)-index
英文叫stage, 或index芭挽。一般存放在 ".git目錄下" 下的index文件(.git/index)中滑废,所 以我們把暫存區(qū)有時也叫作索引(index)本地倉庫-resp
工作區(qū)有一個隱藏目錄.git,這個不算工作區(qū)袜爪,而是Git的版本庫遠程倉庫-remote
相對于本地倉庫只能你一個人訪問蠕趁,在需要多人協(xié)作的時候功能可以再公有網(wǎng)絡上建立一個倉庫,提供大家一起訪問
常用基本命令
- 初始化一個git倉庫辛馆,默認為當前目錄也可以指定目錄
git init
git init repo-name
- 基于遠處倉庫初始化本地倉庫俺陋。基于遠程鏈接初始化本地倉庫,也可以指定本地倉庫的地址
git clone url
git clone url directory
3.查看在你上次提交之后是否有修改倔韭。使用該命令的時候加了 -s 參數(shù)术浪,以獲得簡短的結(jié)果輸出。
git status
git status -s
4.查看執(zhí)行 git status 的結(jié)果的詳細信息
git diff 查看尚未緩存的修改
git diff -cached 查看已經(jīng)緩存的改動
git diff HEAD 查看已經(jīng)緩存和未緩存的改動
git diff --stat 顯示摘要而非整個diff
5.刪除文件寿酌,刪除之后務必要提交
git rm file 刪除工作區(qū)和暫存區(qū)
git rm -f file 修改未提交時需要強制刪除
git rm --cached file 只刪除緩存區(qū)不刪除工作區(qū)
git rm -r * 遞歸刪除
本地工作區(qū)和其他區(qū)域交互常用命令
- 與緩存區(qū)交互
git add file 將工作區(qū)指定新增內(nèi)容或者修改內(nèi)容提交到緩存區(qū)胰苏。
git add . 包括所有內(nèi)容,名字可以使用匹配表達式(*.sh)
git checkout file 將緩存區(qū)的file覆蓋工作區(qū)
- 與本地倉庫交互
git checkout HEAD file 從本地倉庫中檢出文件醇疼,會覆蓋緩存區(qū)和工作區(qū)
git commit -am file 直接將工作區(qū)文件提交本地倉庫省略了git add這一步
- 與遠程倉庫及交互
git pull origin next:master 取回遠程主機origin的next分支的更新硕并,再與本地的master分支合并,同時更新了工作區(qū)秧荆、緩存區(qū)倔毙、本地倉庫
git pull 如果當前分支只有一個追蹤分支,連遠程主機名都可以省
緩存區(qū)和其他區(qū)域交互常用命令
- 與本地倉庫交互
git commit -m file 指定文件暫存區(qū)里的改動給提交到本地的版本庫
git reset file 本地倉庫和緩存區(qū)回退到上一個版本乙濒,本地工作區(qū)內(nèi)容不變
git reset -soft file 本地倉庫回退版本陕赃,可直接commit
git reset -hard file 徹底回退版本,工作區(qū)內(nèi)容被覆蓋
本地倉庫和其他區(qū)域交互常用命令
- 與遠程倉庫交互
git remote 管理遠程倉庫的工作颁股,包括添加遠程庫么库,移除廢棄的遠程庫,管理各式遠程庫分支甘有,定義是否跟蹤這些分支
git push 將本地倉庫的更新推送至遠程倉庫
git fetch 獲取遠程倉庫的更新到本地倉庫
git 文件的狀態(tài)標識
A: 你本地暫存區(qū)新增的文件(本地倉庫中沒有).
C: 文件的一個新拷貝.
D: 你本地刪除的文件(服務器上還在).
M: 工作區(qū)文件的內(nèi)容或者mode被修改了.
R: 文件名被修改了诉儒。
T: 文件的類型被修改了。
U: 文件沒有被合并(你需要完成合并才能進行提交)亏掀。
X: 未知狀態(tài)(很可能是遇到git的bug了忱反,你可以向git提交bug report)。
Git 和SVN
在直觀的使用層面我們可以發(fā)現(xiàn)git是分布式的,svn是集中式的滤愕。我們在使用git的時候無需搭建服務器即可以進行版本控制温算,只有在需要多人共享的時候,才需要服務器端该互。而SVN必須是有一個服務器端米者。
git 和 svn 對文件版本控制的方式也不同,這一點對使用者來說是透明的
如果你有svn的使用經(jīng)驗宇智,在windows環(huán)境下蔓搞,推薦使用TortoiseGit,git圖形客戶端随橘。上手較為方便喂分,但是也需要了解git的結(jié)構(gòu)以及基本命令。
以上內(nèi)容只是對git做了一個簡單的介紹机蔗,在后續(xù)的使用過程中有機會了會對各個命令做詳細的介紹蒲祈。