标签: git-diff

如何在文本编辑器中查看 git diff?

如何在 Atom 等纯旧文本编辑器中查看 git diff?我不想设置或使用差异工具,我只想在任何基本文本编辑器中查看差异。

我见过的其他问题的答案谈到了设置差异工具,但我只想指定一些随机文本编辑器。


附带问题:

  • diff 工具和任何文本编辑器有什么区别?

git git-diff

5
推荐指数
1
解决办法
9535
查看次数

过滤 (git) diff 输出以仅包含与模式匹配的行

是否可以使用 diff/git (或其他常见实用程序)生成 包含与模式匹配的更改的差异?

例如,我有一个文件有两个不同的版本:

a/文件.txt

alpha
marker 100
omega
Run Code Online (Sandbox Code Playgroud)

b/文件.txt

start
marker 200
end
Run Code Online (Sandbox Code Playgroud)

我想生成仅包含对包含字符串marker(或其他正则表达式模式)的行的更改的补丁:

diff --git a/file.txt b/file.txt
index eb27e64..fcc1676 100644
--- a/file.txt
+++ b/file.txt
@@ -1,3 +1,3 @@
 alpha
-marker 100
+marker 200
 omega
Run Code Online (Sandbox Code Playgroud)

(应用此类补丁后,只有 alpha->start、omega->end 更改仍处于待处理状态。)

现在我有一个带有 JGit 的自定义基于行的处理器,但是我对我的实现非常不满意,因为我必须手动解析/拆分/重新组合块,并通过复制/破解 JGit 内部来生成差异)。

由于这似乎是一个常见的用例,我希望有一些工具可以提供开箱即用的功能,但到目前为止我还没有找到任何东西。

请注意,使用类似git diff -G'marker'或任何类型的块过滤是不够的,因为块本身可以任意大(例如,这里只有一个块包含整个文件更改)。

git diff git-diff jgit

5
推荐指数
0
解决办法
647
查看次数

如何将 git diff 输出拆分为单独的文件

我想将 git diff 输出分割成单独的文件。

假设有三个已更改的文件。git diff将输出所有三个差异一次,但是有没有办法将它们分成三个单独的差异文件?

git git-diff

5
推荐指数
1
解决办法
2065
查看次数

Git diff 返回“错误:进程已完成,退出代码为 1”。Github 操作

以下命令 git diff --no-index --output=restapi-diff.txtlatest-restapi.jsonrestapi.json 返回退出代码 1,没有任何进一步的详细信息。使用操作结账时。

git diff git-diff github-actions

5
推荐指数
1
解决办法
2773
查看次数

Git diff 无法在 Github Actions 上工作 -fatal: bad object 7100c3bbc34a9667ca9034a8ec321677ed4b5828

我想查看 Github Actions 上两次提交之间的文件之间的差异。这是我的main.yml文件:

name: GitHub Actions Test
on: [push]
jobs:
  Test-GitHub-Actions:
    runs-on: ubuntu-latest
    steps:
      - name: Adding actions/checkout@v2
        uses: actions/checkout@v2
      - name: Git diff
        run: git diff 7100c3bbc34a9667ca9034a8ec321677ed4b5828 4c5952b60b8a5911154534ea1fefec3567c49c52 ${{ github.workspace }}/data.xml
      - name: Run Python
        run: |
          python3 ${{ github.workspace }}/.github/workflows/app.py
      - name: Setup git - step 1
        run: git config --global user.email "adithraghavs@gmail.com"
      - name: Setup git - step 2
        run: git config --global user.name "Adith Raghav"
      - name: Check for changes
        run: git status …
Run Code Online (Sandbox Code Playgroud)

git github git-diff github-actions

5
推荐指数
1
解决办法
2817
查看次数

获取两个目录中文件的 --no-index 差异,但忽略模式

我有两个包含相似文件的目录,我想查看任何不同文件的差异。这有效:

git diff --no-index ./dir1 ./dir2
Run Code Online (Sandbox Code Playgroud)

但是,这些目录中的某些文件我想在差异中忽略。.gitignore这些文件是否包含在我认为有意义的a 中显然并不重要。

这可能吗?

更多上下文,这是针对研讨会的,每个目录都是研讨会中的一个步骤。我希望有一种方法来展示研讨会每一步所需的更改。这些目录有一些生成的文件,我不想在输出中显示这些生成的文件。此外,我还有一些node_modules在输出中不理想的内容。

另外,我喜欢 的分页功能git diff。此外,大多数参加研讨会的人都习惯了git diff。所以我确实想使用这个而不是其他工具。

git git-diff

5
推荐指数
1
解决办法
1442
查看次数

git status 行数已更改

我希望 git status 也列出更改的行数,\n就像那些+和:-git pull

\n

例子)

\n
\xe2\x9d\xaf LANG=c git status\nOn branch develop\nYour branch is up to date with \'upstream/develop\'.\n\nChanges not staged for commit:\n  (use "git add <file>..." to update what will be committed)\n  (use "git restore <file>..." to discard changes in working directory)\n        modified:   package-lock.json | 1093 ++++++++---\n        modified:   package.json      | 26   +++---\n
Run Code Online (Sandbox Code Playgroud)\n

因为我在文档中找不到这样的选项,所以我尝试使用diffstat,因为它用于git pull

\n
\xe2\x9d\xaf git diff | diffstat -C\n package-lock.json | 1093 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------\n package.json      | …
Run Code Online (Sandbox Code Playgroud)

git git-diff diffstat

5
推荐指数
0
解决办法
1036
查看次数

如何在 Azure CI 管道上进行 git diff

git diff我\xe2\x80\x99m 面临在 Azure DevOps 管道环境中工作的挑战。这是管道脚本,用于将 git HEAD 与之前的提交进行比较,并仅复制已更改的文件。HEAD^git 命令在本地运行良好,但在 Azure 管道中会失败,因为CI 运行中没有。寻求建议,这样的比较在 Azure 中是否可行,以及我如何实现这一目标。

\n
- task: PowerShell@2\n  inputs:\n    targetType: \'inline\'\n    script: |\n      $targetfolder = "$(Build.StagingDirectory)" + "/"\n      \n      function CopyFiles{\n          param( [string]$source )\n      \n          $target = $targetfolder + $source\n      \n          New-Item -Force $target\n          copy-item $source $target -Force\n      }\n      \n      $changes = git diff --name-only --relative --diff-filter AMR HEAD^ HEAD .\n      \n      if ($changes -is [string]){ CopyFiles $changes }\n      else\n      {\n          if ($changes -is [array])\n          { …
Run Code Online (Sandbox Code Playgroud)

git continuous-integration git-diff azure azure-pipelines

5
推荐指数
1
解决办法
3840
查看次数

如何显示使用“git rebase -i”修改的提交消息中的差异?

我做了一个git rebase -i并重写了一次提交。

如何显示我提交的新提交消息和旧提交消息之间的差异?(例如,来自 中的提交git reflog

git git-diff git-rebase git-commit

5
推荐指数
1
解决办法
54
查看次数

如何在git中提交当前头之间的差异?

我正在参与我参与的项目的一些主题分支.我通常在提出拉取请求之前重新分支我的分支.然而,这一次,由于主人的变化,变基是一个很大的痛苦.很多冲突,更糟糕的是,在手动合并提交之后看起来只是丑陋而且松散了他们的观点.我肯定更喜欢在我的分支头和两个分支上的最新提交之间获得差异,然后将这个差异应用于主人的头部,最后创建全新的闪亮提交git add -p.所以我的问题是:如何实现它?一种可能性是简单地将master合并到我的主题分支中,但是有更优雅的解决方案吗?我相信是的.

谢谢你的帮助.

编辑:

一个文件已在主分支上移动,我的提交正在改变此文件(使用它的旧名称).

git git-diff git-merge

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