https://git-scm.com/book/zh/v2
三種狀態
好,請注意。 如果你希望後面的學習更順利,記住下面這些關於 Git 的概念。 Git 有三種狀態,你的文件可能處於其中之一:已提交(committed)、已修改(modified)和已暫存(staged)。 已提交表示數據已經安全的保存在本地數據庫中。 已修改表示修改了文件,但還沒保存到數據庫中。 已暫存表示對一個已修改文件的當前版本做了標記,使之包含在下次提交的快照中。
由此引入 Git 項目的三個工作區域的概念:Git 倉庫、工作目錄以及暫存區域。
安裝-----Google it
爲每一臺電腦配置身份信息
- $ ssh-keygen -t rsa -C "email" //public key for push
- git remote add nickName gitUrl // conn remote
- git push -u remoteBranch localBranch
查看分支
創建分支
合併分支
一定要切換到被合併的分支上去合併
比如說A要合併A1
那麼先要切換到A1,然後在A1上面執行merge
find .get/objects -type f 查詢object是下面所有的文件
git hash-object -w xxx 放到git數據庫並且返回hash值 add操作?
git 對象
- Blob 對象
- tree對象
- commit對象
首次提交,提交一個簡單的文件 a.txt ,commit 之後的圖如下
如圖所示,生成了 3 個對象,一個 commit 對象,一個 tree 對象,一個 blob 對象。圖上藍底是 commit 對象,灰底的是 tree 對象,白底的是 blob 對象,每個對象節點的標題是對象的 key (SHA 摘要)縮略表示。 對於 commit 對象,tree 內容表示這個 commit 對應根目錄的 tree 對象,parent 表示父 commit 節點,通常commit 只有一個父節點,也可能沒有(首次提交時 parent 爲空),也可能有多個(合併節點),commit 對象還保存了 commit message 等信息。 對於 tree 對象,裏面的內容包含了文件名,文件對應的 blob 對象的 key,或者是目錄名和目錄對應 tree 對象的 key。 對於 blob 對象,表示一個實際文件對象的內容,但不包括文件名,文件名是在 tree 對象裏存的。
通過 git log 命令獲取最新 commit 的 key
通過 git cat-file -p <object key> 獲取 key 對應 object 的內容,根據 object 裏的內容,繼續探索,就可以訪問到所有關聯 object.
HEAD 爲什麼要通過 refs/heads/master 中轉一下,而不是直接指向 master 分支的提交?
HEAD 可以直接指向提交嗎?
分支指針切換
遠程倉庫
基於文件共享(nfs)
linux ssh
裝好git yum install git
git地址:username@ip:/dir
密碼
gitlab
https://about.gitlab.com/installation/#centos-7
傳上去
gitlab-ce-10.8.2-ce.0.el7.x86_64.rpm
安裝 rpm -ivh /home/tools/gitlab-ce-10.8.2-ce.0.el7.x86_64.rpm
gitlab-ctl start 啓動gitlab
訪問gitlab http://ip:port
設置密碼
對git與svn進行區別總結:svn是對文件的一個操作,而git是對元數據的操作。如果是兩個文件一模一樣,但是名字不一樣,對於svn來說會存儲兩個文件,但是對於git來說是兩條分支(commit對象指向tree對象再指向blob對象)