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

          不小心將測試代碼提交到生產(chǎn)環(huán)境?別慌,教你 6 種方法秒解決!

          共 1810字,需瀏覽 4分鐘

           ·

          2022-02-12 12:54

          程序員的成長之路
          互聯(lián)網(wǎng)/程序員/技術/資料共享?
          關注


          閱讀本文大概需要 2.8 分鐘。


          Git 版本管理時,往往需要撤銷某些操作。
          本文介紹幾種最主要的情況,給出詳細的解釋。

          一、撤銷提交

          一種常見的場景是,提交代碼以后,你突然意識到這個提交有問題,應該撤銷掉,這時執(zhí)行下面的命令就可以了。
          $?git?revert?HEAD
          上面命令的原理是,在當前提交后面,新增一次提交,抵消掉上一次提交導致的所有變化。它不會改變過去的歷史,所以是首選方式,沒有任何丟失代碼的風險。
          git revert?命令只能抵消上一個提交,如果想抵消多個提交,必須在命令行依次指定這些提交。比如,抵消前兩個提交,要像下面這樣寫。
          $?git?revert?[倒數(shù)第一個提交]?[倒數(shù)第二個提交]
          git revert?命令還有兩個參數(shù)。
          • --no-edit:執(zhí)行時不打開默認編輯器,直接使用 Git 自動生成的提交信息。
          • --no-commit:只抵消暫存區(qū)和工作區(qū)的文件變化,不產(chǎn)生新的提交。

          二、丟棄提交

          如果希望以前的提交在歷史中徹底消失,而不是被抵消掉,可以使用 git reset 命令,丟棄掉某個提交之后的所有提交。
          $?git?reset?[last?good?SHA]
          git reset?的原理是,讓最新提交的指針回到以前某個時點,該時點之后的提交都從歷史中消失。
          默認情況下,git reset?不改變工作區(qū)的文件(但會改變暫存區(qū)),--hard?參數(shù)可以讓工作區(qū)里面的文件也回到以前的狀態(tài)。
          $?git?reset?--hard?[last?good?SHA]
          執(zhí)行?git reset?命令之后,如果想找回那些丟棄掉的提交,可以使用git reflog?命令,具體做法參考這里。不過,這種做法有時效性,時間長了可能找不回來。

          三、替換上一次提交

          提交以后,發(fā)現(xiàn)提交信息寫錯了,這時可以使用?git commit?命令的?--amend??參數(shù),可以修改上一次的提交信息。
          $?git?commit?--amend?-m?"Fixes?bug?#42"
          它的原理是產(chǎn)生一個新的提交對象,替換掉上一次提交產(chǎn)生的提交對象。
          這時如果暫存區(qū)有發(fā)生變化的文件,會一起提交到倉庫。所以,--amend?不僅可以修改提交信息,還可以整個把上一次提交替換掉。

          四、撤銷工作區(qū)的文件修改

          如果工作區(qū)的某個文件被改亂了,但還沒有提交,可以用?git checkout?命令找回本次修改之前的文件。
          $?git?checkout?--?[filename]
          它的原理是先找暫存區(qū),如果該文件有暫存的版本,則恢復該版本,否則恢復上一次提交的版本。
          注意,工作區(qū)的文件變化一旦被撤銷,就無法找回了。

          五、從暫存區(qū)撤銷文件

          如果不小心把一個文件添加到暫存區(qū),可以用下面的命令撤銷。
          $?git?rm?--cached?[filename]
          上面的命令不影響已經(jīng)提交的內(nèi)容。

          六、撤銷當前分支的變化

          你在當前分支上做了幾次提交,突然發(fā)現(xiàn)放錯了分支,這幾個提交本應該放到另一個分支。
          #?新建一個?feature?分支,指向當前最新的提交
          #?注意,這時依然停留在當前分支
          $?git?branch?feature

          #?切換到這幾次提交之前的狀態(tài)
          $?git?reset?--hard?[當前分支此前的最后一次提交]

          #?切換到?feature?分支
          $?git?checkout?feature
          上面的操作等于是撤銷當前分支的變化,將這些變化放到一個新建的分支。
          本文轉(zhuǎn)載自:「阮一峰的網(wǎng)絡日志」,原文:https://url.cn/5NLK2pC,版權歸原作者所有。

          推薦閱讀:

          特斯拉,被破解了。。

          SpringBoot 定時任務動態(tài)管理通用解決方案

          互聯(lián)網(wǎng)初中高級大廠面試題(9個G)

          內(nèi)容包含Java基礎、JavaWeb、MySQL性能優(yōu)化、JVM、鎖、百萬并發(fā)、消息隊列、高性能緩存、反射、Spring全家桶原理、微服務、Zookeeper、數(shù)據(jù)結構、限流熔斷降級......等技術棧!

          ?戳閱讀原文領取!? ? ? ? ? ? ? ??? ??? ? ? ? ? ? ? ? ? ?朕已閱?

          瀏覽 37
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

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

          手機掃一掃分享

          分享
          舉報
          <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>
                  大学生一级黄色片免费看 | www.苗条身,材骚气逼逼出水 | 日本三级精品视频 | 无码一区二区免费三区在线 | 久久精品久久ai 久久精品内射国产 |