一、工作區、暫存區和版本庫的理解
工作區:我們初始化的一個文件夾作為git的倉庫,這個文件夾就是git的工作區。
暫存區:英文叫stage,或index。在版本庫.git)目錄下,有一個index文件(二進制文件)。它實際上就是一個包含文件索引的目錄樹,像是一個虛擬的工作區。在這個虛擬工作區的目錄樹中,記錄了文件名、文件的狀態信息(時間戳、文件長度等),文件的內容并不存儲其中,而是保存在Git對象庫(.git/objects)中,文件索引建立了文件和對象庫中對象實體之間的對應。如果當前倉庫,有文件更新,并且使用git add命令,那么這些更新就會出現在暫存區中。
版本庫:當前倉庫下,如果沒有任何的提交,那么版本庫就是對應上次提交后的內容。下面這個圖展示了工作區、版本庫中的暫存區和版本庫之間的關系。
二、github上我們之前做過什么
在github上我們做過的操作:
1、add sshkey
2、new repository(倉庫)
github上的repository,我認為是一個最終的版本庫,因為我們最終都是要推送到repository中的,其它的操作基本上都是在本機上。
三、舉例說明工作區、暫存區、版本庫與github上的repository的關系
舉個例子來說明吧:背景,一個班30人要交作業,班上分為3個小組,有一個學習委員。
工作區 —— 班上的同學作業
暫存區 —— 每個組的同學的作業都已經交給組長了
版本庫 —— 每個組的組長已經把作業交給學習委員了
Github中的repository—— 學習委員交給老師了
以上就是我對這四者之間的關系的理解。
四、通過github的操作說明工作區、暫存區和版本庫
上圖很清晰的給我們介紹了github與本機的一些常用到的操作。fork我們在這次作業的提交中也學習到了。在這次提交作業過程中,我們有一個前提和三個步驟,如下:
前提:組員fork組長的 Github 中 “ Hb2wTask ” 項目,fork之后,我們自己的github倉庫中就會出現“ Hb2wTask ” 項目。
步驟一:在自己的 Github 中打開 “ Hb2wTask ” 項目,點開你的小組對應的文檔后,點擊 ? ,即可在遠程庫編輯文件了 —— 小組對應的文檔 可以看做是本機的工作區
步驟二:編輯完成后,在網頁底部添加本次修改備注及描述(描述可以不填),點擊 Commit chenga ,完成提交 —— 點擊 Commit chenga 相當于我們在本機中使用命令 add ,然后就到緩存區了。我們的項目主頁,在 Code 中就可以看到我們修改過的文檔了,沒有pull requests的文檔都可以看到
步驟三:推送 Pull requests,那么我們修改之后的項目就可以被推送到組長的項目中了 —— 本機中的push
我們在github中的倉庫可以認為是工作區,在我們提交之后,放在了暫存區,最后pull到別人的github的倉庫中,那么別人的倉庫就可以認為是版本庫。