<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          代碼版本管理筆記 | Python 程序員也應該會的 Git 分支操作

          共 3486字,需瀏覽 7分鐘

           ·

          2021-07-11 09:41

          點擊上方“咸魚學Python”,選擇“加為星標

          第一時間關注Python技術干貨!


          查看分支

          分支分為兩種,一種是本地已經(jīng)存在的,還有一種是服務器上有, 但本地不存在的分支,查看的方式稍有區(qū)別。

          查看本地分支

          git branch

          命令行綠色標記的為當前所在的分支

          查看本地的分支和遠程的所有分支

          git branch -a

          remotes/ 開頭,這說明這個分支并不在本地

          新建分支

          新建分支有兩種情況,第一種是遠程已經(jīng)有的分支,需要把它在本地也同樣創(chuàng)建一份;還有一種是新建一個遠端和本地都不存在的分支。

          導入遠程分支

          把遠程分支在本地創(chuàng)建,可以通過 git checkout  分支名 命令進行,這個命令其實是切換分支用的。但當它發(fā)現(xiàn)你本地不存在這個分支,會自動找到遠程對應的分支然后在本地進行創(chuàng)建

          git checkout  分支名

          新建本地分支

          創(chuàng)建的分支結(jié)構(gòu)和內(nèi)容會與當前所在的分支一模一樣,也就是說,它其實就是復制了當前的分支

          git checkout -b 分支名

          這個時候遠程分支還不存在,所以不能直接推送,需要在第一次推送的時候指定遠程分支名

          git push --set-upstream origin 分支名

          合并分支

          合并代碼

          合并的時候, Git  會對比兩個分支代碼的差異,當 要合并的分支處于比較新的狀態(tài)時候, Git  會將合并的分支的代碼和提交記錄復制到 master  分支中來

          git merge 分支名

          查看合并記錄

          git log

          刪除分支

          當我們修改完 bug 之后,就需要刪除分支以減少倉庫的體積

          刪除分支的操作分為強制刪除和普通刪除

          普通刪除

          git branch -d 分支名

          一般情況下,刪除使用普通刪除即可。普通刪除相對來說比較安全,避免造成數(shù)據(jù)丟失的情況

          強制刪除

          git branch -D 分支名

          在極少數(shù)情況下你可能會遇到普通刪除無法將分支刪除的情況,強制刪除命令執(zhí)行完畢之后,使用 git log 會發(fā)現(xiàn)原來的分支已經(jīng)沒有了。

          比較分支差異

          查看代碼差異

          git diff 分支1 分支2 --stat

          顯示文件具體修改

          git diff 分支1 分支2 [filename]

          顯示全部文件的修改

          git diff 分支1 分支2

          查看提交記錄差異 - 查看新紀錄

          我基于生產(chǎn)分支上新建了一個 dev  分支,然后提交了代碼;但某些原因,我忘記了我提交了幾次修改,此時我就可以通過查看 dev  分支中有的記錄而在生產(chǎn)分支中沒有的記錄

          git log dev ^master

          比較兩個分支之間的差異

          git log 分支1...分支2
          # 查看各記錄存在哪些分支上
          git log --left-right 分支1...分支2

          刪除過期分支

          如果發(fā)現(xiàn)一些分支不需要了,我們可以手動刪除,以此提高響應速度;一般兩類分支可能需要清理:

          1、本地不存在,遠程存在該分支,但不需要了

          2、遠程不存在,本地存在該分支,也不需要了

          清理遠程分支

          # 查看分支列表
          git branch -a
          # 刪除遠端分支
          git push origin --delete 分支名

          清理本地分支

          # 查看分支列表
          git branch -a
          # 查看遠程倉庫分支
          git remote show origin
          # 查看遠程分支已刪除但存在的本地分支
          git fetch --prune origin
          # 查看關聯(lián)失效的分支
          git branch -vv
          # 刪除本地分支
          git branch -d 分支名

          恢復已經(jīng)刪除的分支

          git log 命令,這條命令可以顯示所有提交過的版本信息,但我們對分支的一些管理操作并不會顯示出來,這些管理的操作日志并不是沒有記錄,而是需要使用 git reflog 命令才能顯示

          # 顯示分支操作記錄
          git reflog show
          # 復制操作前的 commit id
          git checkout -b 分支名稱 [commit id]

          回滾 reset 操作

          如果你不小心使用 git reset 回滾了提交記錄,想找回之前的提交記錄也是可以的;可以 git reflog 查看操作歷史,找到執(zhí)行 git reset 命令之前 commitid ,然后 git reset --hard 到那個 commitid 即可

          從歷史版本中找回刪除的文件

          有時候,我們在某個版本中刪除了文件,后來又突然發(fā)現(xiàn)需要這個文件,是可以恢復的;恢復之前首先確定要恢復的文件在哪一個版本( commit )中,假設那個版本號是:7a4312sd ,文件路徑為 abc.php  那么參考命如下

          git checkout 7a4312sd abc.php

          對比分支下的指定版本

          對比一個分支下的不同版本

          git diff [commit id1] [commit id2]

          跨分支比較差異

          # 不同分支不同版本比較
          git diff [分支名] # 對比不同分支最后一個版本比較
          # 不同分支的歷史版本比較
          git diff  [commit id1] [commit id2]

          合并代碼

          假設現(xiàn)在有三個分支,分別為 develop、test、master

          這個時候需要將 develop 分支的代碼合并到 test 然后 再合并到 master

          # 先切換到 test 分支
          git checkout test
          # 將 develop 分支合并到 test
          git merge develop

          代碼沖突

          可以看到?jīng)_突符號以 <<<<<< 開始,以 ====== 符號為分界符號,上面的是當前 test 的,下面的是 develop 分支的,最后以 >>>>>> 為結(jié)束符

          解決沖突后這里提交版本的方式稍微有一些區(qū)別,會在 git commit 后面增加一個 -a 參數(shù),而且不需要 -m 參數(shù)

          git merge 命令合并代碼之后,版本記錄會按照時間順序排序,并自動產(chǎn)生一個 Merge branch 的版本;

          git rebase 命令合并代碼之后,版本記錄會將目標分支的版本放在后面,然后再將當前分支的版本記錄放在前邊。

          合并指定的版本至其他分支

          git cherry-pick 命令是一個使用頻率比較低,但在需要使用的場景時候非常省事,比如說,你在 develop  分支中開發(fā),提交了 10  個版本,只有 2  個版本是穩(wěn)定可以測試的,另外幾個版本不可以,然后需要趕緊將兩個穩(wěn)定的版本提測,這個時候就可以使用 git cherry-pick 命令了

          1、在 develop  分支找到穩(wěn)定版本的 commitid

          2、切換分支到 test  然后依次執(zhí)行 git cherry-pick 命令

          3、通過 git log 檢查是否正確

          對了,看完記得一鍵四連,這個對我真的很重要。

          瀏覽 31
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  青青草污视频 | 成人视频在线播放 | 日韩一级高清 | 97人人揉人人躁人人躁人人躁 | 女人十八毛片a级毛片 |