基本概念:
(1)工作區:電腦可以看到的目錄。
(2)暫存區:stage(
index),
一般存放在 ".git目錄下" 下的index檔案(.git/index)中,所以我們把暫存區有時也叫作索引(index)。
(3)版本庫:工作區有乙個隱藏目錄.git,這個不算工作區,而是
git的版本庫。
index:暫存區(.git/index) head:指向master分支的乙個」游標」
objects: git的物件庫(.git/object 含建立的各種物件及內容)
master:master分支所代表的目錄樹。
git:儲存不同時刻的檔案快照。
git分支:本質僅僅是指向提交物件的可變指標。
(1)git add命令:暫存區的目錄樹被更新,工作區修改(增加)的檔案內容被寫入到物件庫中新物件中,物件id被記錄在暫存區檔案索引中。
(2)git commit 命令:暫存區目錄樹寫到物件庫,master分支更新。(指向的目錄書就是
提交時暫存區的目錄樹
)。(3)git reset head命令:暫存區目錄樹被master分支指向的目錄樹所替換。
(4)git rm --cached 命令:直接從暫存區刪除指定檔案,工作區不改變。
(5)git checkout . 或git checkout -- 命令:用暫存區全部或指定檔案替換工作區檔案。(危險:清除工作區未新增到暫存區的改動
)git checkout 也可切換工作空間。
(6)git checkout head . 或 git check out head 命令:會用head指向的master分支中全部或部分檔案替換暫存區和工作區中的檔案。(危險:會清除工作區及暫存區未提交的改動)。
(7) git init 初始化版本庫,當前
資料夾下初始化
乙個倉庫,此時檔案裡會到乙個.git的隱藏資料夾(將當前目錄變為倉庫)
(8)git pull
:將遠端庫資料更新至本地
(9)git push origin master:將本地庫提交至遠端庫。
基本命令
(1)配置:
配置使用者名稱:git config --global user.name "你的名字"
配置e-mail:git config --global user.email "你的郵箱@xx.com"
(2)與新增有關的:
將當前目錄變為倉庫:git init
將檔案新增到暫存區:git add 檔名 [可選:另乙個檔名]
將暫存區提交到倉庫:git commit –m "描述"
(3)與查詢有關的:
查詢倉庫狀態:git status
比較檔案差異(請在git add之前使用):git diff 檔名
檢視倉庫歷史記錄(詳細):git log
檢視倉庫歷史記錄(單行):git log --pretty=online 或 git log --online
檢視所有版本的commit id:git reflog
(4)與撤銷有關的:
撤銷工作區的修改:git checkout -- 檔名
撤銷暫存區的修改:git reset head 檔名
回退到歷史版本:git reset --hard 該版本id
回退到上個版本:git reset --hard head^
(5)與標籤有關的:
為當前版本打標籤:git tag 標籤名
為歷史版本打標籤:git tag 標籤名 該版本id
指定標籤說明:git tag –a 標籤名 –m "標籤說明" [可選:版本id]
檢視所有標籤:git tag
檢視某一標籤:git show 標籤名
刪除某一標籤:git tag –d 標籤名
(6)與github
有關的:
先有本地庫,後有遠端庫,將本地庫push到遠端庫
關聯本地倉庫和github庫:git remote add origin **上的倉庫位址
第一次將本地倉庫推送到github上:git push –u origin master
先有遠端庫,後有本地庫,從遠端庫clone到本地庫
**位址可以選擇https協議(
)、ssh協議(
)。如果選擇ssh協議,必須將ubuntu的公鑰新增到github上。見下一步
ssh key
生成ssh key:ssh-keygen –t rsa –c "你的郵箱@xx.com"
生成key時彈出選項,回車選擇預設即可。
key儲存位置:/root/.ssh
登陸github,建立new ssh key,其內容為/root/.ssh/id_rsa.pub中文字
已經有了本地庫和遠端庫,二者實現同步
git與svn區別?
(1)git為分布式,且內容按元資料方式儲存
,且沒有全域性版本號,且內容完整性優
.(使用雜湊演算法磁碟故障時,可降低對版本庫破壞)。
(2)svn為非分布式,內容按檔案儲存,有明確的版本號。
參考**:
(1)
(2)
基礎命令:
git --version 檢視
git的版本資訊
git config --global user.name 獲取當前使用者的登入名。
git config --global user.email //獲取當前登入使用者的郵箱
登入git(設定git使用者資訊)
git config --global user.name 『設定英文使用者名稱』
git config --global user.email 『設定的email』
初始化git倉庫
git init當前
資料夾下初始化
乙個倉庫,此時檔案裡會到乙個.git的隱藏資料夾(將當前目錄變為倉庫)
git commit -m 『備註資訊』 增加到版本庫
git log 檢視倉庫歷史記錄(詳細 )
git status 檢視倉庫狀態
git rm in.txt --cached 刪除暫存區指定檔案
git reflog 檢視版本的提交id
git reset 取消暫存
git pull 從遠端庫獲取,並合併到本地分支
關聯本地倉庫和github庫:git remote add origin **上的倉庫位址。
第一次將本地倉庫推送到github上:git push –u origin master。
從遠端庫轉殖到本地:git clone **上的倉庫位址。
比較的是暫存區和工作區的差異
git diff
比較的是暫存區和歷史區的差異
git diff --cached
比較的是歷史區和工作區的差異(修改)
git diff master
合併分支:
svn基本命令
驗證svn安裝是否成功 svnadmin version 建立svn的資料倉儲 svnadmin create data svn svndata spms 啟動svn服務 svnserve d r data svn svndata spms 單倉庫啟動 svnserve d r data svn s...
svn基本命令
1 將檔案checkout到本地目錄 svn checkout path path是伺服器上的目錄 例如 svn checkout svn 簡寫 svn co 2 往版本庫中新增新的檔案 svn add file 例如 svn add test.php 新增test.php svn add php ...
GIT基本概念
工作區是個工作目錄,實質上就是我們的在開發過程中對其進行新增 編輯的源 包括標頭檔案 原始檔和配置檔案 在工作區中有乙個隱藏檔案 git 它不屬於工作區,而是git版本庫。該檔案下包括很多其他檔案,其中重要的是暫存區 git index 物件庫 git objects 分支 master分支和其他分...