代碼差異對比之git diff詳解!


圖片

1、測試對比文件准備

  • 文件A:diff1(diff1文件夾下可以放n個文件)

public class Diff1 {
    public static void main(String[] args){
        int getNum = randomNumber(10,20);
        if (getNum==30){
            System.out.println("中間數="+getNum);
        }else {
            System.out.println("此次沒有找到="+getNum);
        }
    }
    public static int randomNumber(int minNum,int maxNum){
        Random rand = new Random();
        int randomNum = rand.nextInt(maxNum);
        randomNum = randomNum%(maxNum-minNum+1)+minNum;
        return randomNum;
    }
}
  • 文件B:diff2(diff2文件夾下可以放n個文件)
public class Diff2 {
    public static void main(String[] args){
        int addLine =10;
        int getNum = randomNumber(10,20);
        if (getNum==30){
            System.out.println("中間數="+getNum);
        }else {
//            System.out.println("此次沒有找到="+getNum);
        }
    }
    public static int randomNumber(int minNum,int maxNum){
        Random rand = new Random();
        int randomNum = rand.nextInt(maxNum);
        randomNum = randomNum%(maxNum-minNum+1)+minNum;
        return randomNum;
    }
}

2、git diff對比命令

diff --git /Users/diff1 /Users/diff2

image.gif

  • 輸出結果
diff --git a/Users/cuizhongyuan/Desktop/work/010_project/vueSpringboot/Tal_Back/src/test/java/gitdiff/diff1/Diff1.java b/Users/cuizhongyuan/Desktop/work/010_project/vueSpringboot/Tal_Back/src/test/java/gitdiff/diff2/Diff2.java
similarity index 77%
rename from /Users/cuizhongyuan/Desktop/work/010_project/vueSpringboot/Tal_Back/src/test/java/gitdiff/diff1/Diff1.java
rename to /Users/cuizhongyuan/Desktop/work/010_project/vueSpringboot/Tal_Back/src/test/java/gitdiff/diff2/Diff2.java
index 7d6e724..bfca53f 100644
--- a/Users/cuizhongyuan/Desktop/work/010_project/vueSpringboot/Tal_Back/src/test/java/gitdiff/diff1/Diff1.java
+++ b/Users/cuizhongyuan/Desktop/work/010_project/vueSpringboot/Tal_Back/src/test/java/gitdiff/diff2/Diff2.java
@@ -1,14 +1,15 @@
-package gitdiff.diff1;
+package gitdiff.diff2;
 
 import java.util.Random;
 
-public class Diff1 {
+public class Diff2 {
     public static void main(String[] args){
+        int addLine =10;
         int getNum = randomNumber(10,20);
         if (getNum==30){
             System.out.println("中間數="+getNum);
         }else {
-            System.out.println("此次沒有找到="+getNum);
+//            System.out.println("此次沒有找到="+getNum);
         }
     }
     public static int randomNumber(int minNum,int maxNum){

3、輸出格式詳解(重點)

  • 第一行
diff --git a/Users/diff1/Diff1.java b/Users/diff2/Diff2.java

解釋:進行比較的是->diff1版本的Diff1.java(即變動前)和diff2版本的Diff2.java(即變動后)

  • 第二行
index 7d6e724..bfca53f 100644

解釋:表示兩個版本的git哈希值(index區域的7d6e724對象,與工作目錄區域的bfca53f對象進行比較),最后的六位數字是對象的模式(普通文件,644權限)

  • 第三行
--- a/Users/diff1/Diff1.java+++ b/Users/diff2/Diff2.java

解釋:"—“表示變動前的版本,”+++"表示變動后的版本

  • 第四行
@@ -1,14 +1,15 @@

解釋:其中"-1,14″分成三個部分解釋->”-“減號表示第一個文件(即diff1),"1″表示第1行,“14″表示連續14行.合在一起,就表示下面是第一個文件從第1行開始的連續14行.同樣的,”+1,15″表示變動后,成為第二個文件從第1行開始的連續15行

  • 最后是具體的變動內容
-public class Diff1 {
+public class Diff2 {
     public static void main(String[] args){
+        int addLine =10;
         int getNum = randomNumber(10,20);
         if (getNum==30){
             System.out.println("中間數="+getNum);
         }else {
-            System.out.println("此次沒有找到="+getNum);
+//            System.out.println("此次沒有找到="+getNum);
         }
     }
     public static int randomNumber(int minNum,int maxNum){

解釋:+ int addLine =10;->表示:新增行
| - System.out.println(“此次沒有找到=”+getNum);
+// System.out.println(“此次沒有找到=”+getNum); ->表示改行的變動(- 表示之前,+表示之后)git diff 沒有修改的概念

4、獲取到git diff對比結果可以做什么?

通過Git diff可以獲取到項目當前分支下提交前后的代碼變動結果,有了這個結果進一步解析可以去做代碼覆蓋率的實現,在測試階段可以作為測試覆蓋度的一個指標,同時也可以查漏補缺那些業務代碼邏輯沒有測到,實現精准測試的目的。

  • 實際項目中實踐如圖:



更多測試技術分享、學習資源以及一些其他福利可關注公眾號:【Coding測試】獲取:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM