<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                下面介紹 Git 作為分布式版本控制器最強大的功能:分支管理。 ## 3.1 git fetch 刷新本地分支信息 在介紹分支前,先講解另一個命令 git fetch,它的作用是將遠程倉庫的分支信息拉取到本地倉庫,注意,僅僅是更新了本地的遠程分支信息,也就是執行 git branch -avv 命令時,查看到的 remotes 開頭的行的分支信息。 舉例說明一下,首先我們在 GitHub 頁面上對 one.txt 文件進行修改并增加一次提交。 提交完成后,提交數變成 3 個,點下圖紫色框中的鏈接可以看到提交記錄: ![此處輸入圖片的描述](https://img-blog.csdnimg.cn/20200912134947694.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/20200912135003325.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbmd6aGFl,size_16,color_FFFFFF,t_70#pic_center) 在實驗環境中執行 git fetch 命令,然后執行 git branch -avv 查看分支信息: ![此處輸入圖片的描述](https://img-blog.csdnimg.cn/20200912135010955.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/20200912135031659.png#pic_center) 可以看到,本地分支 master 的版本號無變化,而遠程分支已經更新。所以,fetch 命令的作用是刷新保存在本地倉庫的遠程分支信息,此命令需要聯網。此時若想使本地 master 分支的提交版本為最新,可以執行 git pull 命令來拉取遠程分支到本地,pull 是拉取遠程倉庫的數據到本地,需要聯網,而由于前面執行過 git fetch 命令,所以也可以執行 git rebase origin/master 命令來實現 “使本地 master 分支基于遠程倉庫的 master 分支”,rebase 命令在后面還會經常用到,這里只需按部就班操作即可: ![此處輸入圖片的描述](https://img-blog.csdnimg.cn/20200912135039483.png#pic_center) ![此處輸入圖片的描述](https://img-blog.csdnimg.cn/20200912135045524.png#pic_center) 可以看到,遠程倉庫 master 分支、本地倉庫的 origin/master 分支、本地倉庫的 master 分支已經一致。 ## 3.2 創建新的本地分支 分支在項目開發中作用重大,多人協作時尤其不可或缺。例如一個項目上線了 1.0 版本,研發部門需要開發 1.1、1.2 兩個測試版,增加不同的新功能,測試版的代碼顯然不能在正式版所在的分支上,此時需要新的分支來存放不同版次的代碼。再例如實驗樓的課程團隊在維護課程倉庫時,每個人都有各自的分支,在自己的分支上進行修改,然后向 master 分支提 PR(pull request),最后從 master 分支推送到線上。 首先,克隆遠程倉庫到本地,進入倉庫主目錄,執行 git br 查看分支信息: ![此處輸入圖片的描述](https://img-blog.csdnimg.cn/20200912135126129.png#pic_center) 執行 git branch [分支名] 可以創建新的分支: ![此處輸入圖片的描述](https://img-blog.csdnimg.cn/2020091213513378.png#pic_center) ![此處輸入圖片的描述](https://img-blog.csdnimg.cn/20200912135139977.png#pic_center) 此命令創建新分支后并未切換到新分支,還是在 master 分支上,執行 git checkout [分支名] 切換分支,checkout 也是常用命令,先給它設置別名,然后切換分支: ![此處輸入圖片的描述](https://img-blog.csdnimg.cn/20200912135150758.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbmd6aGFl,size_16,color_FFFFFF,t_70#pic_center) 創建新分支還要手動切換太麻煩,介紹另一個常用的命令 git checkout -b [分支名] 創建分支并切換到新分支: ![此處輸入圖片的描述](https://img-blog.csdnimg.cn/20200912135201895.png#pic_center) ![此處輸入圖片的描述](https://img-blog.csdnimg.cn/2020091213521663.png#pic_center) 如上圖所示的分支信息,前兩行是新建的本地分支信息,它們的版本號與主分支 master 一致,這是因為在哪個分支上創建新分支,新分支的提交記錄就與哪個分支一致。新建分支并無跟蹤任何遠程分支,所以沒有 master 分支中的中括號和括號內的藍色遠程分支名。 假設我們要在當前分支 dev1 上開發一個新的功能,需要增加一個文件 new_func1,然后生成一個新的提交: ![此處輸入圖片的描述](https://img-blog.csdnimg.cn/2020091213522663.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/20200912135232494.png#pic_center) ## 3.3 將新分支中的提交推送至遠程倉庫 好,新功能已經寫好并提交到了版本區,現在要推送了,推送到哪里呢?正常邏輯當然要推送到遠程倉庫的同名分支,不過現在遠程倉庫里只有一個分支: ![此處輸入圖片的描述](https://img-blog.csdnimg.cn/20200912135304892.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbmd6aGFl,size_16,color_FFFFFF,t_70#pic_center) 上圖紫色框中是一個下拉按鈕,點擊后顯示倉庫中的全部分支,按鈕上顯示的是當前所在分支。 執行 git push [主機名] [本地分支名]:[遠程分支名] 即可將本地分支推送到遠程倉庫的分支中,通常冒號前后的分支名是相同的,如果是相同的,可以省略 :[遠程分支名],如果遠程分支不存在,會自動創建: ![此處輸入圖片的描述](https://img-blog.csdnimg.cn/20200912135319309.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbmd6aGFl,size_16,color_FFFFFF,t_70#pic_center) 上圖命令可以簡寫為 git push origin dev1 。注意哦,這是我們創建 SSH 關聯后第一次執行 push 命令,可以看到傳輸速度有明顯的提高,更重要的是,不再需要重復輸入用戶名和密碼了,另外打印信息的第一行是警告信息,因為是這個分支的第一次推送嘛,下次執行推送就不會再出現了。現在執行 git br 查看一下分支情況: ![此處輸入圖片的描述](https://img-blog.csdnimg.cn/20200912135325708.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbmd6aGFl,size_16,color_FFFFFF,t_70#pic_center) 可以看到,遠程分支 origin/dev1 的信息已經在本地存在,且與本地同名分支一致。再看下 GitHub 頁面的情況: ![此處輸入圖片的描述](https://img-blog.csdnimg.cn/20200912135333116.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbmd6aGFl,size_16,color_FFFFFF,t_70#pic_center) 很好,與預期毫無二致。 ## 3.4 本地分支跟蹤遠程分支 現在有個問題,當我們再次在 dev1 分支上修改并提交,推送到遠程倉庫時還是要輸入上面的那個長長的命令,好不方便。如果能和 master 分支一樣跟蹤遠程同名分支,就可以直接使用 git push 命令推送了。有辦法的,執行這個命令 git branch -u [主機名/遠程分支名] [本地分支名] 將本地分支與遠程分支關聯,或者說使本地分支跟蹤遠程分支。如果是設置當前所在分支跟蹤遠程分支,最后一個參數本地分支名可以省略不寫: ![此處輸入圖片的描述](https://img-blog.csdnimg.cn/20200912135437491.png#pic_center) ![此處輸入圖片的描述](https://img-blog.csdnimg.cn/20200912135443139.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbmd6aGFl,size_16,color_FFFFFF,t_70#pic_center) 這個命令的 -u 選項是 --set-upstream 的縮寫。可不可以讓本地分支跟蹤遠程非同名分支呢?可以的,盡管幾乎遇不到這種自找麻煩的需求。可不可以撤銷本地分支對遠程分支的跟蹤呢?也是可以的,執行 git branch --unset-upstream [分支名] 即可撤銷該分支對遠程分支的跟蹤,同樣地,如果撤銷當前所在的分支的跟蹤,分支名可以省略不寫: ![此處輸入圖片的描述](https://img-blog.csdnimg.cn/20200912135451611.png#pic_center) ![此處輸入圖片的描述](https://img-blog.csdnimg.cn/20200912135511324.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbmd6aGFl,size_16,color_FFFFFF,t_70#pic_center) 問題又來了,前面的操作是先將本地分支推送到遠程倉庫,使遠程倉庫創建新分支,然后再執行命令使本地分支跟蹤遠程分支,有沒有辦法在推送時就自動跟蹤遠程分支呢?有的,在推送的時候,加個 --set-upstream 或其簡寫 -u 選項即可,現在切換到 dev 分支試一下這個命令: ![此處輸入圖片的描述](https://img-blog.csdnimg.cn/20200912141804271.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/2020091214181625.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbmd6aGFl,size_16,color_FFFFFF,t_70#pic_center) ## 3.5 刪除遠程分支 接下來,介紹一下刪除分支的方法。 首先,刪除遠程分支,使用 git push [主機名] :[遠程分支名] ,如果一次性刪除多個,可以這樣:git push [主機名] :[遠程分支名] :[遠程分支名] :[遠程分支名] 。此命令的原理是將空分支推送到遠程分支,結果自然就是遠程分支被刪除。另一個刪除遠程分支的命令:git push [主機名] --delete [遠程分支名]。刪除遠程分支的命令可以在任意本地分支中執行。兩個命令分別試一下: ![此處輸入圖片的描述](https://img-blog.csdnimg.cn/20200912141844805.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/2020091214185195.png#pic_center) 可以看到本地倉庫已經沒有遠程分支 dev 和 dev1 的分支信息。查看 GitHub 倉庫頁面: ![此處輸入圖片的描述](https://img-blog.csdnimg.cn/20200912141858345.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbmd6aGFl,size_16,color_FFFFFF,t_70#pic_center) 也只剩 master 一個分支。操作成功。 ## 3.6 本地分支的更名與刪除 回到實驗環境,使用 git branch -D [分支名] 刪除本地分支,同樣地,此命令也可以一次刪除多個,將需要刪除的分支名羅列在命令后面即可。在此之前,先介紹一個極少用到的命令:給本地分支改名 git branch -m [原分支名] [新分支名] ,若修改當前所在分支的名字,原分支名可以省略不寫: ![此處輸入圖片的描述](https://img-blog.csdnimg.cn/20200912141936935.png#pic_center) 好,現在要一次性刪除本地分支 ved 和 dev1。需要注意的一點:當前所在的分支不能被刪除。切換到 master 分支,然后執行 git branch -D ved dev1 命令: ![此處輸入圖片的描述](https://img-blog.csdnimg.cn/20200912141945558.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbmd6aGFl,size_16,color_FFFFFF,t_70#pic_center) 執行 git branch -avv 查看當前倉庫分支狀態: ![此處輸入圖片的描述](https://img-blog.csdnimg.cn/2020091214195381.png#pic_center) 很好,一切都回到了課程開始時的樣子,就像什么都沒有發生。本節課程就到這里。
                  <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>

                              哎呀哎呀视频在线观看