一、工作區(qū)柬祠、暫存區(qū)和版本庫的理解
工作區(qū):我們初始化的一個文件夾作為git的倉庫北戏,這個文件夾就是git的工作區(qū)。
暫存區(qū):英文叫stage,或index漫蛔。在版本庫.git)目錄下嗜愈,有一個index文件(二進制文件)。它實際上就是一個包含文件索引的目錄樹莽龟,像是一個虛擬的工作區(qū)蠕嫁。在這個虛擬工作區(qū)的目錄樹中,記錄了文件名毯盈、文件的狀態(tài)信息(時間戳剃毒、文件長度等),文件的內(nèi)容并不存儲其中奶镶,而是保存在Git對象庫(.git/objects)中迟赃,文件索引建立了文件和對象庫中對象實體之間的對應(yīng)。如果當前倉庫厂镇,有文件更新纤壁,并且使用git add命令,那么這些更新就會出現(xiàn)在暫存區(qū)中捺信。
版本庫:當前倉庫下酌媒,如果沒有任何的提交,那么版本庫就是對應(yīng)上次提交后的內(nèi)容迄靠。下面這個圖展示了工作區(qū)秒咨、版本庫中的暫存區(qū)和版本庫之間的關(guān)系。
二雨席、github上我們之前做過什么
在github上我們做過的操作:
1、add sshkey
2吠式、new repository(倉庫)
github上的repository陡厘,我認為是一個最終的版本庫抽米,因為我們最終都是要推送到repository中的,其它的操作基本上都是在本機上糙置。
三云茸、舉例說明工作區(qū)、暫存區(qū)谤饭、版本庫與github上的repository的關(guān)系
舉個例子來說明吧:背景标捺,一個班30人要交作業(yè),班上分為3個小組揉抵,有一個學(xué)習(xí)委員亡容。
工作區(qū) —— 班上的同學(xué)作業(yè)
暫存區(qū) —— 每個組的同學(xué)的作業(yè)都已經(jīng)交給組長了
版本庫 —— 每個組的組長已經(jīng)把作業(yè)交給學(xué)習(xí)委員了
Github中的repository—— 學(xué)習(xí)委員交給老師了
以上就是我對這四者之間的關(guān)系的理解。
四功舀、通過github的操作說明工作區(qū)萍倡、暫存區(qū)和版本庫
上圖很清晰的給我們介紹了github與本機的一些常用到的操作身弊。fork我們在這次作業(yè)的提交中也學(xué)習(xí)到了辟汰。在這次提交作業(yè)過程中,我們有一個前提和三個步驟阱佛,如下:
前提:組員fork組長的 Github 中 “ Hb2wTask ” 項目帖汞,fork之后,我們自己的github倉庫中就會出現(xiàn)“ Hb2wTask ” 項目凑术。
步驟一:在自己的 Github 中打開 “ Hb2wTask ” 項目翩蘸,點開你的小組對應(yīng)的文檔后,點擊 ? ,即可在遠程庫編輯文件了 —— 小組對應(yīng)的文檔 可以看做是本機的工作區(qū)
步驟二:編輯完成后淮逊,在網(wǎng)頁底部添加本次修改備注及描述(描述可以不填)催首,點擊 Commit chenga ,完成提交 —— 點擊 Commit chenga 相當于我們在本機中使用命令 add ,然后就到緩存區(qū)了泄鹏。我們的項目主頁郎任,在 Code 中就可以看到我們修改過的文檔了,沒有pull requests的文檔都可以看到
步驟三:推送 Pull requests备籽,那么我們修改之后的項目就可以被推送到組長的項目中了 —— 本機中的push
我們在github中的倉庫可以認為是工作區(qū)舶治,在我們提交之后,放在了暫存區(qū)车猬,最后pull到別人的github的倉庫中霉猛,那么別人的倉庫就可以認為是版本庫。