<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                第一部分: 三大工作區 ![](https://box.kancloud.cn/8c3c1876fb569ce9711fdc23f0ebb9e0_775x387.png) 版本庫中的文件有三種狀態: ----已修改: modified -----已暫存: staged -----已提交: commit 1)工作目錄(工作區) 理解:1)該目錄存放開發人員開發的代碼文件 2)該目錄里的代碼文件,可以進行版本控制 3)該目錄下有一個隱藏文件.git 2)暫存區 理解: 1)理解為一個虛擬工作區,這個虛擬工作區會跟蹤工作區的文件變化 2)存儲一個tree對象的所有信息的二進制文件,分別指向不同的blob、tree對象 3)我們修改的實際內容并沒有保存到暫存區,在暫存區存放的是文件索引,該文件索引建立文件和版本庫中對象之間的關聯 3)版本庫 理解: 工作目錄下的.git文件夾就是版本庫 版本庫里的文件描述: ![](https://box.kancloud.cn/26547715baf6b11fe578f17d9942e46e_972x460.png) $ cat HEAD ref: refs/heads/new HEAD表示:指向當前分支最新一次提交 注意事項: 1)千萬不要刪除或更改版本庫(.git)目錄下的所有文件 2)新創建的文件,第一次沒有被版本庫追蹤,使用gti status查看狀態,會顯示《untracked》 3)可以通過git add 命令把工作區里的文件,添加到暫存區 4)可以通過git commit命令把暫存區里文件,提交到當前版本庫 可以簡單理解為,將需要提交到版本庫的的所有文件變更通通放到 暫存區,然后,一次性提交 暫存區 中的所有修改。 演示1: ![](https://box.kancloud.cn/6c53a9454628c69dae209995ebe4ed87_973x589.png) 演示2: ![](https://box.kancloud.cn/bda0ba6aece0d9a0e4764e388a14a3c4_939x629.png) 第二部分: 四個對象 (文件在git版本庫里是如何存放的) 1、git 對象模型 1)git的每個對象在git版本里,用40個字符串來表示對象名, 2)字符串由對象內容做sha哈希計算得到 3)通過比較SHA的值確定兩個文件內容是否發生改變 2、不同類型的對象用途 A:blob 存儲文件數據,通常是一個文件 理解: 1)工作區里的每個文件,提交到版本庫,是以二進制的形式存儲的 2)blob對象,通過表示的是單個文件 3)通過git show SHA1查看blob里的內容 B:tree:存放一個目錄,通過用來管理tree和blob(因為在一個目錄里可以新建目錄和文件) 理解: 1)tree對象像一個目錄,用來管理“tree”和“blob”對象 2)一般用來表示內容之間的目錄層次關系 C: commit: 指向一個tree,標記項某個特定時間點的狀態,每執行一次git commit命令,就會生成一個commit對象 理解: 1)“commit”對象指向一個“tree對象” 2)標記項目某一個特定時間點的狀態。它包括一些關于時間點的元數據,如時間戳、最近一次提交的作者、 3)有指向上次提交的指針,方便版本回退 D: tag: 用來標記某一個提交(commit) 理解: 1)tag對象也是指向某個特定的commit提交 2)我們一般情況下,會基于最近一次commit提交打一個tag標簽,標志著一個版本發布(里程碑) ![](https://box.kancloud.cn/82f33d80e3d099fb1f24b2cc03abea2c_415x278.png) 演示: ![](https://box.kancloud.cn/1d93e80b25c4c757a0ab6059cd9eff0c_1119x641.png) 第三部分:二個引用 二個引用:分別為分支、標簽 理解: 1)分支和標簽實際上就是對commit對象提交的引用 2)引用存放路徑: .git/refs $ ll total 0 drwxr-xr-x 1 Administrator 197121 0 一月 26 14:00 heads/ drwxr-xr-x 1 Administrator 197121 0 一月 26 11:20 tags/ heads目錄:存放所有分支的指針 tags目錄: 存放所有的標簽 分支使用場景: 1) 比如多人開發一個項目,A程序員開發模塊A,B程序員開發模塊B,這個時候,每個人都會基于當前master分支,創建一個屬于自己的分支出來,每次提交到自己的分支上,一定時期后,合并到master分支 2)比如當版本1.0發布后,然后又要開發一個功能,我們就會創建一個New分支出來。此時過了2天,發現之前的版本1.0有問題,我們最好的建議,回退到版本1.0,然后創建一個分支出來,專門用來修復bug,修復完畢后把這個bug合并到master分支,然后切換到New分支,把master分支上通過git rebase到new分支 標簽(tag)的使用場景: 1)一般用來標記一個里程牌,一個程序版本的發布 2)程序發布的時候,可以基于tag來發布和回退 演示1: ![](https://box.kancloud.cn/c61ed80b82d247ebc6e3be7622bd07d2_948x554.png) 演示2:標簽 (創建一個輕tag) Administrator@WIN-0JU14CFTKDB MINGW32 /e/project/test01/.git (GIT_DIR!) $ git tag v1.0 --創建一個版本 Administrator@WIN-0JU14CFTKDB MINGW32 /e/project/test01/.git (GIT_DIR!) $ cd refs/tags/ Administrator@WIN-0JU14CFTKDB MINGW32 /e/project/test01/.git/refs/tags (GIT_DIR!) $ ll total 1 -rw-r--r-- 1 Administrator 197121 41 一月 26 14:48 v1.0 Administrator@WIN-0JU14CFTKDB MINGW32 /e/project/test01/.git/refs/tags (GIT_DIR!) $ cat v1.0 27ec4bc2d21589316c58dcf2ecc9e30871b9878d (tag標簽其實也是基于某一次commit提交來創建的) 演示3: ![](https://box.kancloud.cn/6b20f0dd91bfe1328335d7690b8a9c4a_972x583.png)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看