git中文件的比较操作是用linux中的diff命令来完成的,其格式也是按照linux中的diff来显示的

 

假设我们本地新建了一个文件,叫,apple.txt,里面的内容是6行的apple字符。

git java两个文件对比 git 比较两个文件_#include

接下来把这个文件加入到暂存区。之后修改工作区的文件。

git java两个文件对比 git 比较两个文件_工作区_02

 

使用diff命令来对比,工作区和暂存区的文件

git java两个文件对比 git 比较两个文件_git java两个文件对比_03

带-的红色,表示工作区和暂存区相比,减少的内容,

而带+de绿色部分,表示工作区和暂存区相比增加的内容

注:diff命令是以,一行为单位进行文件的管理和比较的,所以即使我们只是在某一行后面增加了一些内容,也是按删除一行,增加一行的方式处理。

 

我们把上面修改后的内容,加入暂存区,继续进行比较

git java两个文件对比 git 比较两个文件_git java两个文件对比_04

发现,结构是一样的。也就是,默认情况下git diff  [pathname],比较的是工作区和暂存区的文件进行比较的。

 

 

当然我们通常情况下是使用工作区的和本地库的文件进行比较。

git java两个文件对比 git 比较两个文件_git java两个文件对比_05

因为这文件我们还没有在本地库中添加,所以工作区和本地库的HEAD指针所指向的版本相比,这个文件完全是一个新文件。

 

为了更好的学习diff这个命令,我们把现在的这个文件上传到本地库。之后对工作区的文件修改,再进行比较。

git java两个文件对比 git 比较两个文件_git java两个文件对比_06

工作区和本地仓库HEAD指针指向的版本比较

git java两个文件对比 git 比较两个文件_git java两个文件对比_07

 

和HEAD指针指向的版本的前一个版本比较,如下

git java两个文件对比 git 比较两个文件_#include_08

 

从这里我们也可看懂diff对比的文件现实的格式。

比如下面这个

git java两个文件对比 git 比较两个文件_#include_08

@@中间的   -表示老的文件

-0,0表示下面对比结果中,显示了老的文件从第0行开始,有0行文件是老的文件。

@@中间的   +表示新的文件

+1,10表示下面的显示结果,显示了新的文件从第0行开始显示,总共显示了10行新的文件。

其中显示内容中绿色的部分(前面有+)表示新文件相比老文件增加的内容。

 

换一个例子

git java两个文件对比 git 比较两个文件_git java两个文件对比_07

@@中间的-4,3表示,下面显示部分是从老文件的第4行开始显示,老文件共显示了3行(黑色字符)

@@中间的+4,7表示,下面显示的内容中,新文件是从第4行开始显示的,新文件显示的内容有7行(原来的3行黑色和新增加的4行绿色)

 

再来一个例子

git java两个文件对比 git 比较两个文件_git java两个文件对比_04

@@中间的-1,6,表示下面显示内容是从老文件的第一行开始,总共显示了6行。

@@中间的+1,6,表示下面显示内容是从新文件的第一行开始,总共显示了6行。

其中-apple表示,老文件中的内容在新文件中删除了。

其中+apple &&&&&&&&& 表示,新文件相比老文件增加的内容。

其它黑色部分表示新旧文件公有的。

 

当然,git diff 命令不带文件名时,会显示当前工作区,和要对比的区或版本的所有不同。

git java两个文件对比 git 比较两个文件_linux_12

 

 

 

 

 

想要深入学习,可以看一下我之前对DM9000网卡驱动做的一个补丁文件。

--- linux-4.19/drivers/net/ethernet/davicom/dm9000.c    2018-10-22 14:37:37.000000000 +0800
+++ linux-4.19.ok/drivers/net/ethernet/davicom/dm9000.c 2019-01-24 22:23:11.896498427 +0800
@@ -40,6 +40,8 @@
 #include <linux/gpio.h>
 #include <linux/of_gpio.h>
 
+#include <linux/clk.h>  //add  zb
+
 #include <asm/delay.h>
 #include <asm/irq.h>
 #include <asm/io.h>
@@ -1436,6 +1438,7 @@
    enum of_gpio_flags flags;
    struct regulator *power;
    bool inv_mac_addr = false;
+   const char *clk_name;
 
    power = devm_regulator_get(dev, "vcc");
    if (IS_ERR(power)) {
@@ -1572,6 +1575,20 @@
        ret = -EINVAL;
        goto out;
    }   
+   
+   //zb add
+    /* Enable clock if specified */
+    if (!of_property_read_string(dev->of_node, "clock-names", &clk_name)) {
+        struct clk *clk = devm_clk_get(dev, clk_name);
+        if (IS_ERR(clk)) {
+            dev_err(dev, "cannot get clock of %s\n", clk_name);
+            ret = PTR_ERR(clk);
+            goto out;
+        }
+        clk_prepare_enable(clk);
+        dev_info(dev, "enable clock '%s'\n", clk_name);
+    }
+

    /* fill in parameters for net-dev structure */
    ndev->base_addr = (unsigned long)db->io_addr;

 

下面给出linux内核中,4.18.20版本中linux内核中的维护人员对提交的补丁的一小片段内容。

diff --git a/drivers/net/ethernet/qlogic/qed/qed_dcbx.c b/drivers/net/ethernet/qlogic/qed/qed_dcbx.c
index e0680ce91328..09ed0ba4225a 100644
--- a/drivers/net/ethernet/qlogic/qed/qed_dcbx.c
+++ b/drivers/net/ethernet/qlogic/qed/qed_dcbx.c
@@ -190,6 +190,7 @@ qed_dcbx_dp_protocol(struct qed_hwfn *p_hwfn, struct qed_dcbx_results *p_data)
 
 static void
 qed_dcbx_set_params(struct qed_dcbx_results *p_data,
+		    struct qed_hwfn *p_hwfn,
 		    struct qed_hw_info *p_info,
 		    bool enable,
 		    u8 prio,
@@ -206,6 +207,11 @@ qed_dcbx_set_params(struct qed_dcbx_results *p_data,
 	else
 		p_data->arr[type].update = DONT_UPDATE_DCB_DSCP;
 
+	/* Do not add vlan tag 0 when DCB is enabled and port in UFP/OV mode */
+	if ((test_bit(QED_MF_8021Q_TAGGING, &p_hwfn->cdev->mf_bits) ||
+	     test_bit(QED_MF_8021AD_TAGGING, &p_hwfn->cdev->mf_bits)))
+		p_data->arr[type].dont_add_vlan0 = true;
+
 	/* QM reconf data */
 	if (p_info->personality == personality)
 		p_info->offload_tc = tc;
@@ -233,7 +239,7 @@ qed_dcbx_update_app_info(struct qed_dcbx_results *p_data,
 		personality = qed_dcbx_app_update[i].personality;
 		name = qed_dcbx_app_update[i].name;
 
-		qed_dcbx_set_params(p_data, p_info, enable,
+		qed_dcbx_set_params(p_data, p_hwfn, p_info, enable,
 				    prio, tc, type, personality);
 	}
 }
@@ -956,6 +962,7 @@ static void qed_dcbx_update_protocol_data(struct protocol_dcb_data *p_data,
 	p_data->dcb_enable_flag = p_src->arr[type].enable;
 	p_data->dcb_priority = p_src->arr[type].priority;
 	p_data->dcb_tc = p_src->arr[type].tc;
+	p_data->dcb_dont_add_vlan0 = p_src->arr[type].dont_add_vlan0;
 }
 
 /* Set pf update ramrod command params */