国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

git的工作區、暫存區、本地倉庫、遠程倉庫

2019-11-09 14:39:30
字體:
來源:轉載
供稿:網友

轉載地址:(http://san-yun.iteye.com/blog/2061647) 1、git的工作區:在當前倉庫中,新增,更改,刪除文件這些動作,都發生在工作區里面。

2、git的暫存區:英文叫stage, 或index。在版本庫.git)目錄下,有一個index文件。它實際上就是一個包含文件索引的目錄樹,像是一個虛擬的工作區。在這個虛擬工作區的目錄樹中,記錄了文件名、文件的狀態信息(時間戳、文件長度等),文件的內容并不存儲其中,而是保存在Git對象庫(.git/objects)中,文件索引建立了文件和對象庫中對象實體之間的對應。如果當前倉庫,有文件更新,并且使用git add 命令,那么這些更新就會出現在暫存區中。

3、版本庫:當前倉庫下,如果沒有任何的提交,那么版本庫就是對應上次提交后的內容。 版本庫與工作區和暫存區的關系: 這里寫圖片描述 “HEAD” 實際是指向 master 分支的一個“游標”。所以圖示的命令中出現 HEAD 的地方可以用 master 來替換。 圖中的 objects 標識的區域為 Git 的對象庫,實際位于 “.git/objects” 目錄下,里面包含了創建的各種對象及內容。

當對工作區修改(或新增)的文件執行 “git add” 命令時,暫存區的目錄樹被更新,同時工作區修改(或新增)的文件內容被寫入到對象庫中的一個新的對象中,而該對象的ID被記錄在暫存區的文件索引中。

當執行提交操作(git commit)時,暫存區的目錄樹寫到版本庫(對象庫)中,master 分支會做相應的更新。即 master 指向的目錄樹就是提交時暫存區的目錄樹。

當執行 “git reset HEAD” 命令時,暫存區的目錄樹會被重寫,被 master 分支指向的目錄樹所替換,但是工作區不受影響。

當執行 “git rm –cached ” 命令時,會直接從暫存區刪除文件,工作區則不做出改變。

當執行 “git checkout .” 或者 “git checkout – ” 命令時,會用暫存區全部或指定的文件替換工作區的文件。這個操作很危險,會清除工作區中未添加到暫存區的改動。


使用git diff查看各個區之間的差異

使用命令 代表意義
git diff 比較的是工作區和暫存區的差別
git diff –cached 比較的是暫存區和版本庫的差別
git diff HEAD 可以查看工作區和版本庫的差別

每次commit后,git diff –cached沒有內容,是因為暫存區的內容已經更新到版本庫中,因此暫存區和版本庫中的內容無差別

git reset和git revert的區別: reset是重置,默認是git reset –mixed 可以讓版本庫重置到某個commit狀態,該commit之后的commit不會保留,并重置暫存區,但是不改變工作區。即這個時候,上次提交的內容在工作區中還會存在。

如果使用git reset –hard 將版本庫,暫存區和工作區的內容全部重置為某個commit的狀態。之前的commit不會保留。

revert比reset更加溫柔一點,回滾到某次commit且該commit之后的提交記錄都會保留,并且會在此基礎上新建一個提交。對于已經push到服務器上的內容作回滾,推薦使用revert。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 南雄市| 伊川县| 岳阳市| 天峨县| 义乌市| 左云县| 浪卡子县| 汉中市| 松溪县| 米脂县| 高碑店市| 滨州市| 克什克腾旗| 大埔县| 田林县| 吉木乃县| 鄂尔多斯市| 寿阳县| 宜昌市| 长丰县| 柳林县| 尼玛县| 丹阳市| 浠水县| 长宁县| 新野县| 安图县| 邹平县| 新昌县| 安徽省| 松原市| 舟山市| 新民市| 凤庆县| 北碚区| 辽中县| 平湖市| 利辛县| 饶河县| 平湖市| 太原市|