git學習資源:
- star 的做用是收藏,目的是方便之後查找。
- watch 的做用是關注,目的是等做者更新的時候,你能夠收到通知。
- fork 的做用是參與,目的是你能夠增長新的內容,而後 Pull Request,把你的修改和主倉庫原來的內容合併。
fork能夠將別人的工程複製到本身帳號下。但有一個缺點是:當源項目更新後,你fork的分支並不會一塊兒更新,須要本身手動去更新。
fork以後,通常能夠看到一個帶有本身git名稱的ssh或者https訪問的地址。例如:
參與別人的開源項目,只需訪問它的項目主頁,點「Fork」就在本身的帳號下克隆了一個倉庫,
而後
從本身的帳號下使用SSH URL進行clone,由於只有SSH URL 連接的倉庫才能推送修改。
開發完成後要往本身的倉庫推送。若是你但願你fork的官方庫能接受你的修改,你就在GitHub上發起一個pull request。
- 首先在github上新建一個遠程倉庫git-learn,此時會看到一個帶有本身git名稱的ssh或者https訪問的地址。
https://github.com/fuleying/git-learn.git
git@github.com:fuleying/git-learn.git
- 在本地創建一個相同名稱的文件夾git-learn,並進入該文件夾目錄
- git init 初始化空倉庫
- 建立一些文件,git add,將文件歸入版本控制,能夠將多個文件多步歸入
- git commit -m "first commit" 進行離線提交,完成歸入操做
- 添加遠程倉庫origin,即用字符串 origin指代對應的倉庫地址,origin即遠程倉庫在本地的簡稱
git remote add origin git@github.com:fuleying/git-learn.git
- 將本地的master分支push到遠程倉庫origin上 git push origin master
git remote 查看當前配置有哪些遠程倉庫
git remote -v --verbose
的簡寫,顯示遠程倉庫對應的克隆地址--verbose
git快照
git會把出現變動的文件直接拷貝,造成新的blob類型的快照,而非與上一個版本的diff。而不是在每一個版本中記錄着各個文件的具體差別。
因此一旦須要查看某版本直接load便可,而其餘差別版本控制須要作merge,因此快。空間換時間。
並不是每一個當前版本都須要作備份,爲提升性能,若文件沒有變化,Git不會再次保存,而只對上次保存的快照做一連接。
git會在隱藏目錄.git裏存在object裏,按期會優化,保證快照空間,和讀取時間的平衡。
Git的四種基本類型html
-
BLOB:每一個blob表明一個(版本的)文件,blob只包含文件的數據,而忽略文件的其餘元數據,如名字、路徑、格式等。git
-
TREE:每一個tree表明了一個目錄的信息,包含了此目錄下的blobs,子目錄(對應於子trees),文件名、路徑等元數據。所以,對於有子目錄的目錄,git至關於存儲了嵌套的trees。github
-
COMMIT:每一個commit記錄了提交一個更新的全部元數據,如指向的tree,父commit,做者、提交者、提交日期、提交日誌等。每次提交都指向一個tree對象,記錄了當次提交時的目錄信息。一個commit能夠有多個(至少一個)父commits。數據庫
-
TAG:tag用於給某個上述類型的對象指配一個便於開發者記憶的名字, 一般用於某次commit。服務器
Git 專用名詞
- Workspace:工做區,從Git目錄中的壓縮對象數據庫中提取出某個版本的全部文件和目錄,用以開始後續工做的叫作工做目錄。
- Index / Stage:暫存區,通常都放在 Git 目錄中。有時候人們會把這個文件叫作索引文件,不過標準說法仍是叫暫存區域。
- Repository:倉庫區(或本地倉庫),即本地的.git 目錄。
- Remote:遠程倉庫
基本的 Git 工做流程以下:ssh
- 在工做目錄中修改某些文件。
- 對修改後的文件進行快照,而後保存到暫存區域。
- 提交更新,將保存在暫存區域的文件快照永久轉儲到 Git 目錄中。
git fetch到遠程倉庫中拉取從你上次克隆以來別人上傳到此遠程倉庫中的全部更新(或是上次 fetch 以來別人提交的更新)。fetch命令只是將遠端的數據拉到本地倉庫,並不自動合併到當前工做分支,只有當你確實準備好了,才能手工合併。
git fetch origin
來同步遠程服務器上的數據到本地。該命令首先找到origin
是哪一個服務器,而後從上面獲取你還沒有擁有的數據,更新你本地的數據庫,而後把origin/master
的指針移到它最新的位置上。git fetch originoriginorigin/master
git clone自動建立本地的 master 分支用於跟蹤遠程倉庫中的 master 分支。
git pull從原始克隆的遠端倉庫中抓取數據後,合併到工做目錄中的當前分支。