<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國際加速解決方案。 廣告
                ## 參考資料: * [git reset官方API](https://git-scm.com/docs/git-reset) ## 實踐總結: * git reset 和 git revert 的區別: > 1. git revert是用一次新的commit來回滾之前的commit,git reset是直接刪除指定的commit。 > 2. 在回滾這一操作上看,效果差不多。但是在日后繼續merge以前的老版本時有區別。因為git revert是用一次逆向的commit“中和”之前的提交,因此日后合并老的branch時,導致這部分改變不會再次出現,但是git reset是直接把某些commit在某個branch上刪除,因而和老的branch再次merge時,這些被回滾的commit應該還會被引入。 > 3. git reset 是把HEAD向后移動了一下,而git revert是HEAD繼續前進,只是新的commit的內容和要revert的內容正好相反,能夠抵消要被revert的內容。 * 此處應該有圖: * ![git_reset_s1](https://box.kancloud.cn/1bf4ef1142bc865e9889bba31ffc4160_483x457.png) * ![git_reset_s2](https://box.kancloud.cn/bebefca35787a01f3e483f53d0427c2a_613x297.png) * git reset 的3種方式: * 1.git reset -–mixed:此為默認方式,不帶任何參數的git reset,即是這種方式;它回退到某個版本,只保留源碼,回退commit和index信息; * 假設提交節點為A-B-C-D(且A-B-C-D均提交到遠程分支了), 從D回退到A則B、C提交的代碼會出現在**工作區**, 另外本地分支也會落后遠程分支兩個節點(`git pull`指令更新代碼會顯示本地工作區改動跟遠程代碼會有沖突, 先執行`git add -A`在執行`git pull`也能將代碼與遠程分支一致); * 圖解(HEAD為**本地倉庫**、INDEX為**暫存區**、WORKING為**工作區**): ![git_reset_s3](https://box.kancloud.cn/6ddc6bcbe7248e498eeae218976b3e6d_580x136.png) * 2.git reset –-soft:回退到某個版本,只回退了commit的信息,不恢復index信息。如果還要提交,直接commit即可; * 假設提交節點為A-B-C-D(且A-B-C-D均提交到遠程分支了), 從D回退到A則B、C提交的代碼會出現在**工作區**跟**暫存區**,另外本地分支也會落后遠程分支兩個節點(`git pull`指令更新代碼會將代碼與遠程分支一致); * 圖解(HEAD為**本地倉庫**、INDEX為**暫存區**、WORKING為**工作區**): ![](https://box.kancloud.cn/510b817588fa0b81d48b50c23429f13f_580x136.png) * 3.git reset –-hard:徹底回退到某個版本,本地的源碼也會變為上一個版本的內容;(最常用) * 假設提交節點為A-B-C-D(且A-B-C-D均提交到遠程分支了), 從D回退到A則B、C提交的代碼會消失掉,另外本地分支也會落后遠程分支兩個節點(`git pull`指令更新代碼會將代碼與遠程分支一致); * 圖解(HEAD為**本地倉庫**、INDEX為**暫存區**、WORKING為**工作區**): ![](https://box.kancloud.cn/a201aa03fdc8b7e4ef92924f2a9df2a9_800x188.png) ## 實踐場景: * 場景:代碼已 commit 到本地倉庫,需要處理掉該commit, 且讓改動 的文件出現在 **工作區** 指令: `git reset --mixed origin/master` ; * PS: 如想讓改動的文件出現在暫存區,指令:`git reset --soft origin/master`; * PS2: 如想讓改動的文件完全消失(慎操作), 指令:`git reset --hard origin/master`; * 場景2: 代碼本想提交到B分支, 不小心操作, 將代碼提交到A分支了,還沒提交到A遠程分支的情況下怎么遷移代碼到B分支? * `git checkout A` 切換到A分支,如果當前已在A分支忽略此指令; * `git log` 查看A分支提交記錄, 拷貝上次的提交ID(d362816); * `git reset --soft d362816` d362816 為 commitId; * `git stash save "暫存改動代碼"` 將代碼放在**工作現場**; * `git checkout B` 切換到B分支; * `git stash pop` 將改動代碼從**工作現場**取出; * `git add -A` + `git commit -m "提交改動"` 將改動代碼提交到B分支; ## git reset 常用指令: * git reset HEAD a.txt * 將**本地倉庫**的 a.txt 覆蓋**暫存區的**a.txt(注意本地工作區間的a.txt不會變化); * git reset HEAD . * 將**本地倉庫**的所有文件(當前目錄以及子目錄)覆蓋**暫存區的**所有文件(注意本地工作區間的文件不會變化); * git reset --hard HEAD^ * 本地工作區間代碼回到上一次版本; * git reset --hard HEAD^^ * 本地工作區間代碼回到上上次版本; * git reset --hard HEAD~10 * 本地區間代碼回到前10個的版本; * git reset --hard d362816 * 本地區間代碼回退到指定版本(d362816 為commit id, 可通過[git log](https://github.com/wteam-xq/testGit/blob/master/learn_log/git_clone.md) 查到) * git reset --hard origin/master * 本地工作區間代碼回退到遠程版本(master為分支名). ## 相關指令: * [git checkout](http://www.hmoore.net/wteamxq/git_rank/276599) 切換分支、切換文件指令: 我也可以回退代碼哦。 * [git log](http://www.hmoore.net/wteamxq/git_rank/276601) 查看commit日志指令: `git reset`好基友!
                  <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>

                              哎呀哎呀视频在线观看