1. 程式人生 > 資訊 >國產廠商“被擋門外”,汽車晶片“前裝上車”到底有哪些門檻

國產廠商“被擋門外”,汽車晶片“前裝上車”到底有哪些門檻

撤銷修改

1、撤銷工作區中當前目錄中的所有修改
git checkout .

2、撤銷工作區中指定檔案的修改
git checkout -- filename

注意:checkout命令只能撤銷工作區中的修改,不能撤銷暫存區中的修改

git checkout命令還有一個非常重要的作用就是切換分支,可用於分支管理

1、切換到指定分支(如果分支在本地不存在,會自動從遠端倉庫拉取)
git checkout dev

2、切換分支的同時建立分支
git checkout -b dev

版本回退

版本回退是指將版本庫從當前版本回退到其他版本

語法:git reset -- hard版本號

有時,我們需要將Git版本回退(還原)到以前的某個版本,可以使用git reset命令

在git中,HEAD指標指向的是當前版本,也就是最新的conmit id,上一個版本是HEAD^,上上個版本就是HEAD^^,上50個版本可以寫作HEAD~50。

可以使用下面的命令,回退到上一個版本

gitreset--hard HEAD^

這時,我們再使用git log命令檢視版本庫被修改的日誌。卻發現,看不到被回退的版本之後的歷史記錄了。如果,想再回到最新的版本,怎麼辦?

只要剛剛的命令列視窗沒有關掉,你就可以順著往上面找,直到發現最新的版本號(如4b2a0c88a2d03675694013ac6a2bd6f55c830cdc),於是,就可以使用下面的命令還原到指定的版本:

gitreset--hard 4b2a0c8

版本號(commit id)沒必要寫全,一般寫前七位就夠了,Git會自動去匹配。
但是,假如你回退到了某個版本後,把電腦關了。第二天又後悔了,想要恢復到最新版本。
這時,可以使用命令git reflog來檢視你的每一次操作日誌,該命令可以輸出對應的版本號的操作記錄。這樣,我們就可以恢復到任意版本了。

語法:git reset options

git reset有很多可用選項,可以使用命令git reset -h來檢視

其中最常用的三個選項是:

  • --mixed:reset HEAD and index。表示重置HEAD指標和index暫存區,但保持工作區不變。它是預設選項。
  • --soft:reset only HEAD。表示僅僅重置HEAD指標,即只改變HEAD的指向,但保持工作區和暫存區不變。
  • --hard:reset HEAD, index and working tree。表示重置HEAD指標、index暫存區和工作區。這個才是完整的版本回退。

場景分析

場景一

  • 假如你只是修改了工作區,還沒有git add到暫存區。可以使用下面的命令撤銷工作區中的修改。

    #僅僅是撤銷工作區中的修改
    git checkout .

場景二

  • 假如你修改了工作區,並把工作區中的修改git add到了暫存區。

    # 如果你想撤銷工作區和暫存區中的修改。
    gitreset--hard HEAD
    # 簡寫為
    gitreset--hard

    # 如果你僅僅只是想要撤銷暫存區中的修改。
    gitreset--mixed
    # 簡寫為
    gitreset

場景三

  • 假如你修改了工作區,並把工作區中的修改git add到了暫存區,然後又git commit提交到了版本庫。

    # 如果你想回退到上一個版本,可以使用下面的命令。
    gitreset--hard HEAD^

    # 檢視當前的版本號,可以使用。
    git rev-parse HEAD

說明:完整的版本回退,包含三個要素:

    • 更改HEAD指標的指向(即讓HEAD指向目標版本)
    • 回退暫存區(即暫存區中的內容也要回退到目標版本)
    • 回退工作區(即工作區中的內容也要回退到目標版本)

以上簡單總結如下:

  • 已修改,未暫存:git checkout . (git checkout <file>)
  • 已暫存,未提交: git reset (git reset --hard 會覆蓋)
  • 已提交,未推送: git reset --hard origin/master (遠端倉庫覆蓋本地倉庫)
  • 已推送: git reset --hard <commitID> (如果要覆蓋遠端必須強制推 git push -f)

git強制覆蓋原生代碼(與git遠端倉庫保持一致)

git強制覆蓋:
    git fetch --all  //從另一個儲存庫下載物件和引用
    git reset --hard origin/master  //放棄本地修改
    git pull  //開始更新
git強制覆蓋本地命令(單條執行):
    git fetch --all && git reset --hard origin/master && git pull
第一個是:拉取所有更新,不同步; 第二個是:原生代碼同步線上最新版本(會覆蓋本地所有與遠端倉庫上同名的檔案); 第三個是:再更新一次(其實也可以不用,第二步命令做過了其實)

Git其他命令

    • 檢視版本庫的狀態

      語法:git status

      git status命令非常有用。它可以檢視版本庫的當前狀態,還可以看到相關操作的提示資訊。

    • 檢視修改

      # 如果你修改了工作區中的某些檔案,想要檢視具體更改了什麼內容,可以使用 git diff 命令
      gitdiff.
      gitdifffilename

    • 檢視工作區和版本庫的區別

      # 如果你只是修改了工作區,還沒有 git add 到暫存區,想要檢視工作區和版本庫的區別。

      # 檢視工作區和版本庫的區別
      gitdiff

      上述命令只能檢視到工作區中已經存在的檔案的修改,如果是新建立的檔案,它追蹤不到。如果修改和新檔案已經git add到了暫存區,就需要使用下面的命令來檢視。

    • 檢視暫存區和版本庫的區別

      # 如果你修改了工作區,已經 git add 到了暫存區,想要檢視暫存區和版本庫的區別。

      gitdiff--cached

    • 檢視兩個版本之間的區別

      如果你修改了工作區,已經git add到了暫存區,並且git commit到了版本庫。這樣head指標就指向了最新的版本。想要比較兩個版本之間的區別。

      語法:git diff [版本號1] [版本號2]

      # 比較兩個版本之間的差異
      git diff4129523 0a7d9af

      #4129523:表示上一個版本號
      # 0a7d9af:當前版本號(最新版本號)

      # 比較之前的版本和當前版本的差異
      git diff4129523head

      # 比較某個檔案在兩個版本之間的差異
      git diff09d9b45 head ./config/app.php

      # 比較之前的版本和當前版本的差異的簡寫形式
      git diff4129523

    • 檢視本地的兩個分支的區別

      語法:git diff [branch1] [branch2]

      # 比較develop分支和master分支的區別
      git diff developmaster

    • 檢視本地分支和遠端分支的區別

      # 對比本地的develop分支和遠端master分支的區別
      git diff develop origin/master

    • 檢視版本庫的歷史記錄

      如果你想檢視版本庫提交的歷史記錄,可以使用git log命令。

      #檢視版本庫的歷史記錄
      gitlog

      #檢視版本庫的歷史記錄,美化輸出
      gitlog--pretty=oneline

      #檢視版本庫的歷史記錄,只顯示前5條
      gitlog-5

      gitlog-5--pretty=oneline