如何使用git diff找到添加的行(未更改)?

时间:2016-10-22 11:52:45

标签: git

我在项目中有一个更改日志文本文件。我想从2个标签之间获取此文件的更改列表。我准备了这个命令:

git diff tag1..tag2 file | grep -v -e "+++ b/file" -e "@@" | grep "+" 

作为输出,我收到标记为已添加的所有行(以+开头)。但是在它们之间可能存在一些先前存在的线,但是在提到的标签之间进行了修改(例如纠正了拼写错误)。是否有任何选项允许仅过滤新行或仅修改过的行?或者也许任何允许控制线条修改的%条件的选项都打印在输出中?

2 个答案:

答案 0 :(得分:0)

Git本身并不这样做,如果你关心语义而不是简单的语法,那么这通常是一个难题。但是,Git会附带一个名为'use strict'; const path = require('path'); const loaders = require('./webpack/loaders'); const plugins = require('./webpack/plugins'); const applicationEntries = process.env.NODE_ENV === 'development' ? ['webpack-hot-middleware/client?reload=true'] : []; const mainEntry = process.env.NODE_ENV === 'development' ? './src/sample/index.tsx' : './src/lib/index.tsx'; module.exports = { entry: [mainEntry].concat(applicationEntries), output: { path: path.join(__dirname, 'dist'), filename: '[name].js', publicPath: '/', sourceMapFilename: '[name].js.map', chunkFilename: '[id].chunk.js', }, devtool: process.env.NODE_ENV === 'production' ? 'source-map' : 'inline-source-map', resolve: { root: path.resolve('./src'), extensions: [ '', '.webpack.js', '.web.js', '.tsx', '.ts', '.js', '.json', ], }, plugins: plugins, devServer: { historyApiFallback: { index: '/' }, }, module: { preLoaders: [ loaders.tslint, ], loaders: [ loaders.tsx, loaders.html, loaders.css, loaders.scss, loaders.eot, loaders.svg, loaders.ttf, loaders.woff, loaders.json, { test: /\.png$/, loader: 'url-loader', query: { mimetype: 'image/png' }, }, ], }, externals: { 'react/lib/ReactContext': 'window', 'react/lib/ExecutionEnvironment': true, 'react/addons': true, }, }; 的后处理过滤器。 Perl脚本中的代码执行您感兴趣的语法分析,因此可以对其进行修改以生成您想要的内容。

请参阅https://github.com/git/git/tree/master/contrib/diff-highlight以获取差异突出显示的来源。阅读自述文件以查看有关此类分析中涉及的语义问题的说明。请注意,as of Git version 2.9,突出显示脚本与Git的其余部分一起安装,因此您不必将其从贡献源区域中删除。

答案 1 :(得分:0)

不幸的是,我无法找到任何令人满意的答案(也不能在其他任何地方找到),所以我必须自己编写必要的脚本。