标签: git-diff

用于从文件中选择单个 Python 函数的 Bash 脚本

对于git 别名问题,我希望能够按名称从文件中选择单个 Python 函数。例如:

  ...
  def notyet():
      wait for it

  def ok_start(x):
      stuff
      stuff
      def dontgettrickednow():
         keep going
  #stuff
      more stuff

  def ok_stop_now():
Run Code Online (Sandbox Code Playgroud)

从算法的角度来看,以下内容已经足够接近了:

  1. 当找到匹配的行时开始过滤/^(\s*)def $1[^a-zA-Z0-9]/
  2. 继续匹配,直到找到不是or ^\s*#的行^/\1\s](即,可能是缩进的注释,或者比前一个缩进长的行)

(我并不关心以下函数之前的装饰器是否被选取。结果供人类阅读。)

我试图用 Awk 来做到这一点(我几乎不知道),但这比我想象的要难一些。对于初学者来说,我需要一种方法来存储原始 之前的缩进长度def

python bash awk parsing git-diff

4
推荐指数
1
解决办法
752
查看次数

什么是“git diff --word-diff”默认正则表达式?

git diff--word-diff-regex=<...>匹配单词的选项。某些语言有特殊的默认值(如 中所述man 5 gitattributes)。但这些是什么?文档中没有描述,我查找了 的来源git,也没有找到它们。

有任何想法吗?

编辑:我在git 1.9.1,但我会接受任何版本的答案。

git git-diff word-diff

4
推荐指数
1
解决办法
1030
查看次数

查找何时从 git 存储库中删除了一段代码

我的旧版本软件中有一段代码已从当前版本中删除。我想知道这部分是什么时候从代码库中删除的。目前,我这样做的方法是手动将我的集成分支与每个旧提交进行比较,但是包含代码的文件版本和我当前的版本之间有很多提交。

简而言之,如果我在旧版本中的文件的第 44-52 行上有代码,而新版本中不存在该代码,那么当它被删除时,我如何找到该提交?

git diff git-diff

4
推荐指数
1
解决办法
1218
查看次数

从 git patch 中删除行而不损坏

我有一个庞大而复杂的 git diff。它有大约 1200 个案例,其中删除了包含字符串“fubar”的行(如果重要的话,带引号)。我想要做的是应用补丁,但不要删除这些行。

我尝试从补丁文件中删除以下表单的每一行。问题是行号是错误的,因此补丁已损坏。除了编辑行号之外,我想知道是否有解决问题的合理方法。

我删除的内容:

- (whatever here) "fubar" (whatever else here)
Run Code Online (Sandbox Code Playgroud)

git diff git-diff

4
推荐指数
2
解决办法
2661
查看次数

列出更改 (diff) 包含给定字符串的文件?

是否有一个简单的 git 命令来列出差异包含给定字符串的文件,或者我是否必须迭代?

我需要与其他更改分开提交重构(方法名称更改),因此我需要确定差异包含新方法名称的文件。

git git-diff

4
推荐指数
1
解决办法
565
查看次数

diff 和 show 的不同 git pager 选项

我喜欢我的标签显示为 4 个空格,为此我有首选项core.pager = 'less -x4'.

我知道此时我在吹毛求疵,但即使在差异模式下,我也希望前导标签为 4 个空格,这显然是最常用的 - 但是由于前导+, -,它仅显示为 3或。由于对齐的行,这有点烦人,如果有些没有前导选项卡,与其他人相比,它们会移动 1 列。

我可以更正差异的显示,less -x1,5以获得 4 个空格的选项卡,在列 1 模 4 上对齐。但是,此选项会导致前导选项卡在非差异模式下显示为 1 列,这反过来又非常令人不安。

因此,对于两个具体示例,我如何设置 git 选项以便我使用:

  • less -x1,5对于差异(或真正的补丁显示)命令,例如git diffgit show HEAD
  • less -x4 对于不显示差异的命令,例如 git show HEAD~1:package.json

我确信必须有一个不同的渲染器来处理基本diffcat操作,但我无法找到这些特定的选项(尽管它们可能存在,但关于 git 主题有很多噪音)。我也不想写一大堆别名,这有点太脏了。那么这甚至可能吗?

git git-diff git-config git-show

4
推荐指数
1
解决办法
763
查看次数

'git diff' 可以只输出长行中的更改吗?

当我对仅由单个很长的行组成的文件进行更改时,是否可以git diff仅输出该行中已更改的部分?

我知道git diff --word-diff只会以颜色突出显示已更改的部分,但它仍然会输出整行。

是否有一个选项可以只输出行中已更改的部分?或者也许是只能匹配 的彩色部分的 grep 模式git diff --word-diff

git diff git-diff

4
推荐指数
1
解决办法
558
查看次数

列出 git 中提交所触及的所有文件

如何列出两次提交之间“触及”的所有文件?我正在寻找一个类似于git diff COMMIT1..COMMIT2 --name-only但包括稍后修改和恢复的文件的命令。

例如,假设我有一个包含一系列提交(线性历史)的存储库:C0<-C1<-C2<-C3<-C4。提交 C1 引入了一个新文件 F,然后提交 C3 将其从存储库中删除。我正在寻找一个命令,给定 C0 和 C4,它会告诉我中间有一个文件 F。即使 C0 和 C4 中没有这样的文件。因此git diff根本不会提及文件F。

git git-diff git-log

4
推荐指数
1
解决办法
406
查看次数

我怎样才能在phpunit中模拟git diff的结果

我正在用PHP编写数据库迁移脚本,我需要在phpunit中模拟git diff的结果.这个想法是git diff只返回自上次提交以来在includes /中添加或更新的文件的名称.但是,当我正在编写脚本并提交更改时,这当然会不断变化.

这是Migrate类和gitDiff方法:

#!/usr/bin/php
<?php

class Migrate {

    public function gitDiff(){
        return shell_exec('git diff HEAD^ HEAD --name-only includes/');
    }
}
?>
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

php git phpunit shell-exec git-diff

3
推荐指数
1
解决办法
160
查看次数

查看(清单)在本地和远程分支之间更改的文件-git

如何列出在当前本地分支和相应的远程分支之间“差异”的文件?

情况是,我早些时候就进行了远程控制,从那以后我就重新依靠master +压缩了一些提交。

在执行git status时,我得到

您的分支和“来源/您的分支”已经分开,分别具有11和2个不同的提交。

我不想执行“ git diff origin/YourBranch YourBranch”,因为所做的更改数量很大。确认在本地和远程之间更改的文件有意义之后,我将进行强制推送。

git git-diff

3
推荐指数
1
解决办法
2553
查看次数

标签 统计

git-diff ×10

git ×9

diff ×3

awk ×1

bash ×1

git-config ×1

git-log ×1

git-show ×1

parsing ×1

php ×1

phpunit ×1

python ×1

shell-exec ×1

word-diff ×1