git diff适用于git管理的文件。而diff命令则没有限制。但一般系统文件都在版本控制中,所以git diff用的比较多。
推荐diff -u
一。参数
1.diff格式参数-u 输出统一格式,-c是传统格式。diff有"传统"和"统一"两种格式,一般使用"统一"格式,即-u . 比较而言,统一格式生成的文件大,但包含了更多的信息,有利于阅读与定位注意到-c 与-u这二种格式不能同时使用。你只能使用其中一种格式化输出内容diff -u -c /home/gaoyibo/php-site/php-site/src/Search/web.xml /home/gaoyibo/search/workspace/searchServer/WebContent/WEB-INF/web.xml > web.patch diff: conflicting output style options diff: Try `diff --help' for more information. 了解-u的输出格式:同一块内容,里面用+,-区分文件的修改。 --- /home/gaoyibo/php-site/php-site/src/Search/web.xml 2011-11-08 15:38:07.000000000 +0800+++ /home/gaoyibo/search/workspace/searchServer/WebContent/WEB-INF/web.xml 2011-11-07 11:22:45.000000000 +0800@@ -25,8 +25,9 @@ <servlet-name>InitServlet</servlet-name> <servlet-class>com.daodao.servlet.InitServlet</servlet-class> <init-param>+ <!-- change path --> <param-name>propspath</param-name>- <param-value>/home/search/config/</param-value>+ <param-value>/home/gaoyibo/search/resource/</param-value> </init-param> <init-param> <param-name>propsname</param-name>2.diff目录用到参数如果比较二个目录,使用-r,表示Recursively compare any subdirectories found. -x 用来排除目录中的某个文件 **3.其它参数-a Treat all files as text.-b Ignore changes in the amount of white space.-N 如果某个文件只在一个目录中出现,则假定在另一个目录中为空文件.查看diff -acb生成的patch文件:
示例1:注意下页的示例只为说明-c,推荐使用-u。
不会针对同行做修改。只有增减。注意,这种情况下,---文件的变化都是在***里使用“-”来标志。---部分没有内容。这与!时的情况不同。
diff -r -a -c -b -x Makefile.temp /home/gaoyibo/search/workspace/searchServer/src/com/daodao/application/search/Indexer.java /home/gaoyibo/php-site/php-site/src/Search/src/com/daodao/application/search/Indexer.java
*** /home/gaoyibo/search/workspace/searchServer/src/com/daodao/application/search/Indexer.java 2011-10-27 14:21:12.000000000 +0800--- /home/gaoyibo/php-site/php-site/src/Search/src/com/daodao/application/search/Indexer.java 2011-11-08 15:38:07.000000000 +0800****************** 1,7 **** package com.daodao.application.search; import java.io.BufferedOutputStream;- import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream;--- 1,6 ----****************** 62,68 **** // private static PinYinSearchTree m_cPinYinSearchForLocation = new PinYinSearchTree(); - // public static LinkedBlockingQueue<Document> m_lDocQueue = new LinkedBlockingQueue<Document>(200000); --- 61,66 ----****************** 106,112 **** } } - private Indexer(Properties prop) { _init(prop);--- 104,109 ----****************** 120,126 **** { prop = DaoDaoConfig.getProperties(); }- //私有的构造方法供单例使用。 m_iInstance = new Indexer(prop); } return m_iInstance;--- 117,122 ----
示例2:对同行做修改。注意---部分格式的变化。
diff -r -a -c -b -x Makefile.temp /home/gaoyibo/search/workspace/searchServer/src/com/daodao/servlet/Init.java /home/gaoyibo/php-site/php-site/src/Search/src/com/daodao/servlet/Init.java
*** /home/gaoyibo/search/workspace/searchServer/src/com/daodao/servlet/Init.jav2011-11-08 19:51:56.000000000 +0800--- /home/gaoyibo/php-site/php-site/src/Search/src/com/daodao/servlet/Init.java2011-11-08 19:51:46.000000000 +0800****************** 32,38 **** // DaoDaoPostDBReader.getInstance(); // get location related info long lStart = System.currentTimeMillis();! // DaoDaoLocationReader.getInstance(); long lSpan = System.currentTimeMillis() - lStart; lStart = System.currentTimeMillis(); DaoDaoLogging.SERVLET.info("Loading all location info takes " + lSpan--- 32,38 ---- // DaoDaoPostDBReader.getInstance(); // get location related info long lStart = System.currentTimeMillis();! DaoDaoLocationReader.getInstance(); long lSpan = System.currentTimeMillis() - lStart; lStart = System.currentTimeMillis(); DaoDaoLogging.SERVLET.info("Loading all location info takes " + lSpan****************** 48,54 **** if (DaoDaoConfig.getStringProperty(GEOPREFIXSEARCH).equalsIgnoreCase( "true")) { ! // GeoPrefixSearch.getInstance(); lSpan = System.currentTimeMillis() - lStart; lStart = System.currentTimeMillis(); DaoDaoLogging.SERVLET.info("Loading all geo prefix index takes "--- 48,54 ---- if (DaoDaoConfig.getStringProperty(GEOPREFIXSEARCH).equalsIgnoreCase( "true")) { ! GeoPrefixSearch.getInstance(); lSpan = System.currentTimeMillis() - lStart; lStart = System.currentTimeMillis(); DaoDaoLogging.SERVLET.info("Loading all geo prefix index takes