1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

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

        共 3486字,需瀏覽 7分鐘

         ·

        2021-07-11 09:41

        點擊上方“咸魚學(xué)Python”,選擇“加為星標(biāo)

        第一時間關(guān)注Python技術(shù)干貨!


        查看分支

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

        查看本地分支

        git branch

        命令行綠色標(biāo)記的為當(dāng)前所在的分支

        查看本地的分支和遠(yuǎn)程的所有分支

        git branch -a

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

        新建分支

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

        導(dǎo)入遠(yuǎn)程分支

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

        git checkout  分支名

        新建本地分支

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

        git checkout -b 分支名

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

        git push --set-upstream origin 分支名

        合并分支

        合并代碼

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

        git merge 分支名

        查看合并記錄

        git log

        刪除分支

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

        刪除分支的操作分為強(qiáng)制刪除和普通刪除

        普通刪除

        git branch -d 分支名

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

        強(qiáng)制刪除

        git branch -D 分支名

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

        比較分支差異

        查看代碼差異

        git diff 分支1 分支2 --stat

        顯示文件具體修改

        git diff 分支1 分支2 [filename]

        顯示全部文件的修改

        git diff 分支1 分支2

        查看提交記錄差異 - 查看新紀(jì)錄

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

        git log dev ^master

        比較兩個分支之間的差異

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

        刪除過期分支

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

        1、本地不存在,遠(yuǎn)程存在該分支,但不需要了

        2、遠(yuǎn)程不存在,本地存在該分支,也不需要了

        清理遠(yuǎn)程分支

        # 查看分支列表
        git branch -a
        # 刪除遠(yuǎn)端分支
        git push origin --delete 分支名

        清理本地分支

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

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

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

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

        回滾 reset 操作

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

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

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

        git checkout 7a4312sd abc.php

        對比分支下的指定版本

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

        git diff [commit id1] [commit id2]

        跨分支比較差異

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

        合并代碼

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

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

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

        代碼沖突

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

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

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

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

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

        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
        點贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

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

        手機(jī)掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            俺去也av | 校花洗澡被农民工侵犯 | 99高清无码 | 公妇借种乱h日出水 | 欧美99p | 老司机午夜精品视频在线观看 | 96精品秘 无码一区二区 | 在线艹B 天天狠狠干 | 老板把我抱进房间揉我胸视频 | 夫妇交换av888 |