4.GIT中的diff命令


欢迎访问个人网络日志🌹🌹知行空间🌹🌹


常用命令

git diff

git diff命令用来输出git仓库两个文件,两个分支或者两个commmit id等之间文件的差异。

直接使用git diff命令,将会输出本地还没有add/stage到仓库中的所有文件修改。

diff --git a/CMakeLists.txt b/CMakeLists.txt
index e93e7aa..1744a58 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -21,5 +21,6 @@ include_directories(${CMAKE_SOURCE_DIR}/test/inc)
 include_directories(${CMAKE_SOURCE_DIR}/Zoo/inc)
 include_directories(${CMAKE_SOURCE_DIR}/IntelCvTutorial/include)
 
+# shared library
 add_subdirectory(test)
 add_subdirectory(app)
\ No newline at end of file

git diff filename

这个命令会输出文件当前状态与其上次提交之间的发生的修改。

# git diff README.md
diff --git a/README.md b/README.md
index e0a5b22..73fcc36 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,10 @@
 # basic_cplusplus_examples
 
-#### 介绍
-C++ trick 实例
+## 介绍
+
+### test
+
+包含一些`tutorial examples`的代码。
 
 #### 软件架构
 软件架构说明

git diff branch_name

这个命令给出当前分支与branche_name分支最近一次commit_id之间的差异。

# git diff master 
diff --git a/CMakeLists.txt b/CMakeLists.txt
index e93e7aa..1744a58 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -21,5 +21,6 @@ include_directories(${CMAKE_SOURCE_DIR}/test/inc)
 include_directories(${CMAKE_SOURCE_DIR}/Zoo/inc)
 include_directories(${CMAKE_SOURCE_DIR}/IntelCvTutorial/include)
 
+# shared library
 add_subdirectory(test)
 add_subdirectory(app)
\ No newline at end of file
diff --git a/README.md b/README.md
index e0a5b22..73fcc36 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,10 @@
 # basic_cplusplus_examples
 
-#### 介绍
-C++ trick 实例
+## 介绍
+
+### test
+
+包含一些`tutorial examples`的代码。
 
 #### 软件架构
 软件架构说明

git diff --staged (or --cached) path/to/file

当使用git add将修改添加到缓冲区后,使用git diff --staged还能查到文件上所做的修改。

git diff HEAD

使用这个文件可以同时查看使用git add后及本地未stage的所有修改,不包括未跟踪的文件。

# git diff HEAD 
diff --git a/README.md b/README.md
index e0a5b22..73fcc36 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,10 @@
 # basic_cplusplus_examples
 
-#### 介绍
-C++ trick 实例
+## 介绍
+
+### test
+
+包含一些`tutorial examples`的代码。
 
 #### 软件架构
 软件架构说明

git diff commit_id1 commit_id2

比较两个commit id之间的修改。

# git diff 4df24e4da3ce0c576e04aef68befa003d5560496 4941529d0c50e38247b77f317ec52a6e89678fda
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1744a58..e93e7aa 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -21,6 +21,5 @@ include_directories(${CMAKE_SOURCE_DIR}/test/inc)
 include_directories(${CMAKE_SOURCE_DIR}/Zoo/inc)
 include_directories(${CMAKE_SOURCE_DIR}/IntelCvTutorial/include)
 
-# shared library
 add_subdirectory(test)
 add_subdirectory(app)
\ No newline at end of file

使用git diff创建和使用Git Patch补丁

创将Git Patch补丁

  • 先是将git diff的输出保存成Git Patch文件
  • 然后将修改舍弃,提交都可以
  • 使用git apply GIT_PATCH.patch应用修改
# git diff HEAD > readme.patch
# 生成文件 readme.patch
diff --git a/README.md b/README.md
index e0a5b22..73fcc36 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,10 @@
 # basic_cplusplus_examples
 
-#### 介绍
-C++ trick 实例
+## 介绍
+
+### test
+
+包含一些`tutorial examples`的代码。
 
 #### 软件架构
 软件架构说明

# git apply readme.patch

像上面这样就完成了GIT_PATCH.patch的创建和应用,还有一些其他的操作。

git apply GIT_PATCH.patch

git apply时可以跟一些参数来处理不同的情况。

  • --verbose-v,输出详细信息
  • --whitespace=fix,自动修复补丁文件中的空格,避免空格warning和缩进错误。
  • --check,在应用补丁之前,先进行检查
  • --stat,在应用补丁之前,先统计会插入几行/删除几行,修改几个文件
git apply --stat readme.patch
 README.md |    7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)
  • --no-add,只应用patch中的删除操作
  • --exclude,应用补丁时排除指定文件
  • --include,应用补丁时包含指定文件

reference


欢迎访问个人网络日志🌹🌹知行空间🌹🌹


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值