<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國際加速解決方案。 廣告
                ## 1、Git 倉庫的三大區域 本節課程我們將完成一次從本地倉庫修改代碼、提交并推送到遠程倉庫的操作。 Git 本地倉庫有三大區域:工作區、暫存區、版本區。這是一個概念,有這個了解即可,隨著使用 Git 的時間增多,慢慢就會理解這三個區域的作用以及為何要這么設計,學習階段只需按照文檔逐步操作即可。接下來我們以命令為主線介紹 Git 的操作。 ![此處輸入圖片的描述](https://img-blog.csdnimg.cn/20200912114328821.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbmd6aGFl,size_16,color_FFFFFF,t_70#pic_center) 注意,所有 Git 命令都以 git 開頭。 ## 2、一次完整的修改、提交、推送操作 首先,進入倉庫主目錄,執行 git status 查看整個倉庫的狀態: ![此處輸入圖片的描述](https://img-blog.csdnimg.cn/20200912114353797.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbmd6aGFl,size_16,color_FFFFFF,t_70#pic_center) **2.1 對工作區進行修改** 創建一個文件并再次查看倉庫狀態,這步操作是在工作區中: ![此處輸入圖片的描述](https://img-blog.csdnimg.cn/2020091211444229.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbmd6aGFl,size_16,color_FFFFFF,t_70#pic_center) 如上圖所示,新建文件后,命令行前綴又發生了一些微小的變化,紅色 master 后面出現了 * 星號,這表示工作區或暫存區有變化,對文件進行增刪改操作都會出現這個星號,另外使用 git status 命令亦可查看詳情。 **2.2 添加修改到暫存區以及撤銷修改** 按照上圖的提示,使用 git add [文件名] 命令跟蹤此新建文件,即把新增文件添加到暫存區,以備提交: ![此處輸入圖片的描述](https://img-blog.csdnimg.cn/20200912114547798.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbmd6aGFl,size_16,color_FFFFFF,t_70#pic_center) 如果對多個文件或目錄進行了增刪改,可以使用 git add . 命令全部添加到暫存區。 注意這里有個概念,當我們修改了工作區,git add 命令是將這些修改添加到暫存區,暫存區記錄的只是修改。如果要撤銷暫存區的修改怎么辦?根據上圖的提示,執行 git reset -- [文件名] 或者 git rm --cached [文件名] 命令即可: ![此處輸入圖片的描述](https://img-blog.csdnimg.cn/20200912114555228.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbmd6aGFl,size_16,color_FFFFFF,t_70#pic_center) 上圖的命令,如果省略最后的文件名,把命令寫成 git reset -- 即可把暫存區的全部修改撤銷。好,現在暫存區的修改被撤銷,又回到了工作區。 現在介紹另一個命令 git diff,它可以用來查看工作區被跟蹤的文件的修改詳情,此時新建文件 one.txt 并未被跟蹤,而已被跟蹤的文件 README.md 無修改,所以看不到。注意,只有在版本區中存在的文件才是被跟蹤文件。 我們先修改 README.md 文件,然后執行此命令: ![此處輸入圖片的描述](https://img-blog.csdnimg.cn/20200912114607224.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbmd6aGFl,size_16,color_FFFFFF,t_70#pic_center) 此時會跳到新的頁面,即工作區修改詳情頁,按 Q 退出此頁面: ![此處輸入圖片的描述](https://img-blog.csdnimg.cn/20200912114639831.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbmd6aGFl,size_16,color_FFFFFF,t_70#pic_center) 現在,將工作區的兩處修改(新增文件 one.txt,修改文件 README.md)全部添加到暫存區,并使用 git diff --cached 查看暫存區的全部修改: ![此處輸入圖片的描述](https://img-blog.csdnimg.cn/20200912114648770.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbmd6aGFl,size_16,color_FFFFFF,t_70#pic_center) 同樣,此命令也會跳到新的頁面,即暫存區修改詳情頁: ![此處輸入圖片的描述](https://img-blog.csdnimg.cn/20200912114657245.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbmd6aGFl,size_16,color_FFFFFF,t_70#pic_center) **2.3 查看提交歷史** 接下來,將執行 git commit 命令把暫存區的修改提交到版本區,生成一個新的版本。 在此之前,先介紹另一個命令 git log,它用來查看版本區的提交歷史記錄,當前只有一個提交,就是在 GitHub 上創建新倉庫時的初始化提交。同樣此命令也會跳到新頁面,如下圖所示: ![此處輸入圖片的描述](https://img-blog.csdnimg.cn/20200912114828543.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbmd6aGFl,size_16,color_FFFFFF,t_70#pic_center) 關于查看提交歷史記錄的命令,有些常用的選項介紹一下: - git log [分支名] 查看某分支的提交歷史,不寫分支名查看當前所在分支 - git log --oneline 一行顯示提交歷史 git - log -n 其中 n 是數字,查看最近 n 個提交 - git log --author [貢獻者名字] 查看指定貢獻者的提交記錄 git - log --graph 圖示法顯示提交歷史 **2.4 配置個人信息** 接下來需要對 Git 進行一些本地配置: - user.email:寫入你自己注冊 GitHub 賬號的郵箱 - user.name:你自己的 GitHub 賬號名字 這兩個命令設置你的身份信息如下圖。git config -l 可以查看配置信息(就不展示截圖了): ![此處輸入圖片的描述](https://img-blog.csdnimg.cn/2020091211501398.png#pic_center) 完成后,系統自動生成 Git 的配置文件,就是主目錄中的隱藏文件 .gitconfig : ![此處輸入圖片的描述](https://img-blog.csdnimg.cn/20200912115020948.png#pic_center) 上圖所示的配置文件也是可以直接手動修改。 **2.5 提交暫存區的修改** 現在執行 git commit 命令生成一個新的提交,一個必須的選項 -m 用來提供該提交的備注: ![此處輸入圖片的描述](https://img-blog.csdnimg.cn/20200912115118143.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbmd6aGFl,size_16,color_FFFFFF,t_70#pic_center) 提交后,暫存區的修改被清空,執行 git log 查看提交記錄,紫色框中的十六進制序列號就是提交版本號,這是很重要的信息,每個提交都有自己單獨的版本號,就像公民身份證號一樣: ![此處輸入圖片的描述](https://img-blog.csdnimg.cn/20200912115126998.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbmd6aGFl,size_16,color_FFFFFF,t_70#pic_center) 觀察上圖的提交信息,提交版本是按時間倒序排列的,也就是最近的提交排在最上面,你可能需要查看時間正序排列的信息,那么可以使用 git log --reverse 命令。 現在介紹一個超級實用、使用頻率極高但幾乎所有 Git 教程都不重視的命令 git branch -avv,它用來查看全部分支信息: ![此處輸入圖片的描述](https://img-blog.csdnimg.cn/20200912115136848.png#pic_center) 上圖有三行信息,依次說明: 第一行,開頭的星號表示當前所在分支,綠色的 master 是分支名,之所以是綠色,也是因為它是當前所在分支。后面第二項是版本號,第三項中括號里面藍色的字,表示此分支跟蹤的遠程分支的名字,當然啦,這也是克隆遠程倉庫到本地時的默認設置 -- 創建 master 分支并自動跟蹤遠程同名分支;冒號后面黑色文字表示本地分支領先其跟蹤的遠程分支一個提交。最后一項是提交時填寫的備注信息。 第二行,是 Git 指針信息,它指向遠程倉庫的 master 分支,這行信息暫不重要。 第三行,遠程分支信息,詳見第一行的解釋。 在執行 commit 命令時,再介紹一個我并不推薦的選項 -a ,它的作用是將未添加到暫存區的修改,也就是工作區的修改也一并提交,但會略過未被跟蹤的文件,比如新建文件 one.txt,此命令的完整格式:git commit -am xxxxx 。謹慎的做法是按照前文的順序,修改工作區 - 提交到暫存區 - 隨時使用 git status 查看倉庫狀態 - 將暫存區的修改提交到版本區生成一次新的提交。 最后一個環節,將本地新增的提交推送到 GitHub 遠程倉庫中,命令是 git push,后面不需要任何選項和參數,此命令會把本地倉庫 master 分支上的新增提交推送到遠程倉庫的同名分支上,因為當前所在的分支就是 master,而且上文提到,它已經跟蹤了遠程倉庫的同名分支: ![此處輸入圖片的描述](https://img-blog.csdnimg.cn/2020091211514951.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbmd6aGFl,size_16,color_FFFFFF,t_70#pic_center) 此命令需要再次輸入你的 Github 用戶名和密碼,密碼為隱藏數據,輸入時看不到。推送成功后執行 git branch -avv 查看分支情況: ![此處輸入圖片的描述](https://img-blog.csdnimg.cn/20200912115156609.png#pic_center) 如上圖所示,本地分支 master 與遠程分支 origin/master 的版本號一致,通常看兩個版本號是否一致,只需比對前四位。看一下網頁上的情況: ![此處輸入圖片的描述](https://img-blog.csdnimg.cn/20200912115204489.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbmd6aGFl,size_16,color_FFFFFF,t_70#pic_center) 完全符合預期。 一個小細節,在上圖右側有 “14 hours ago” 字樣,因為這次提交操作是 14 小時前完成的,提交后我睡了一覺,與推送操作的時間無關。 以上就是一次完整的修改 - 提交 - 推送操作。一次推送中可以包含多個 git commit 操作,也就是多個提交可以一起推送。 ## 3、版本回退 如果發現 one.txt 文件內容有誤,怎么做?可以修改此文件然后再次添加到暫存區、提交、推送,也可以撤銷最近一次提交,修改文件后重新提交推送。現在使用后一種方法來演示撤銷提交的操作流程。 首先執行 git reset --soft HEAD^ 撤銷最近的一次提交,將修改還原到暫存區。--soft 表示軟退回,對應的還有 --hard 硬退回,后面會講到,HEAD^ 表示撤銷一次提交,HEAD^^ 表示撤銷兩次提交,撤銷 n 次可以簡寫為 HEAD~n。軟退回一個提交后執行 git branch -avv 命令查看分支信息: ![此處輸入圖片的描述](https://img-blog.csdnimg.cn/20200912120657929.png#pic_center) ![此處輸入圖片的描述](https://img-blog.csdnimg.cn/20200912120710455.png#pic_center) 可以看到本地倉庫的 master 分支的版本號已經發生了變化,變成了前一次提交的版本號,中括號里也有提示信息,本地分支 master 落后其跟蹤的遠程分支 origin/master 一個提交。 執行 git status 查看倉庫狀態,果然上一個提交中的修改全部扔回了暫存區: ![此處輸入圖片的描述](https://img-blog.csdnimg.cn/20200912120727875.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbmd6aGFl,size_16,color_FFFFFF,t_70#pic_center) 再次修改 one.txt 文件,執行 git add . 命令將新的修改添加到暫存區,然后執行 git commit 命令生成新的提交: ![此處輸入圖片的描述](https://img-blog.csdnimg.cn/20200912120741351.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbmd6aGFl,size_16,color_FFFFFF,t_70#pic_center) ## 4、處理 commit 時間線分叉 執行 git status 和 git branch -avv 查看倉庫狀態和分支狀態: ![此處輸入圖片的描述](https://img-blog.csdnimg.cn/20200912120842689.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbmd6aGFl,size_16,color_FFFFFF,t_70#pic_center) ![此處輸入圖片的描述](https://img-blog.csdnimg.cn/2020091212085058.png#pic_center) 可以看到本地倉庫的 master 分支與遠程倉庫的 origin/master 分支在提交版本上有了沖突,又叫做提交時間線分叉。因為剛才的提交操作不是基于遠程倉庫 origin/master 分支的最新提交版本,而是撤回了一個版本。這種情況下也是可以將本地 master 分支推送到遠程倉庫的,需要加一個選項 -f ,它是 --force 的簡寫,這就是強制推送: ![此處輸入圖片的描述](https://img-blog.csdnimg.cn/20200912120858878.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbmd6aGFl,size_16,color_FFFFFF,t_70#pic_center) 執行 git branch -avv 看一下分支信息,本地 master 與遠程 master 的版本號一致,前四位都是 e290,在瀏覽器上刷新 GitHub 頁面,結果如預期: ![此處輸入圖片的描述](https://img-blog.csdnimg.cn/20200912120905963.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbmd6aGFl,size_16,color_FFFFFF,t_70#pic_center) ## 5、本地倉庫 commit 變化記錄 假設此時發現情況不對,之前的那次版本號為 5c04 的提交是正確的,剛才的版本回退操作全都是誤操作,怎么辦?再次執行一次版本回退嗎?當然不需要啦,我們有 git reflog 命令,它會記錄本地倉庫所有分支的每一次版本變化。實際上只要本地倉庫不被刪除,隨你怎么折騰,都能回退到任何地方。reflog 記錄只存在于本地倉庫中,本地倉庫刪除后,記錄消失。執行此命令如下圖所示: ![此處輸入圖片的描述](https://img-blog.csdnimg.cn/20200912120934915.png#pic_center) 怎么回退到 5c04 那個版本呢?可以直接執行命令 git reset --hard [版本號] ,如果記不清版本號,也可以根據上圖第 3 行的信息,執行 git reset --hard HEAD@{2} 命令,其中 HEAD@{2} 就是上圖第 3 行第 2 列所示,這個命令的意思是回到當前分支最近兩次提交版本變化前: ![此處輸入圖片的描述](https://img-blog.csdnimg.cn/20200912120942173.png#pic_center) 還想反悔,剛才還是改對了,怎么辦?再執行一次即可,這次大括號里就是 1 了: ![此處輸入圖片的描述](https://img-blog.csdnimg.cn/20200912120948538.png#pic_center) 重要的一點,本節全部命令中,只有 push 是需要聯網執行的,它對遠程倉庫進行了修改。
                  <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>

                              哎呀哎呀视频在线观看