如何在 Atom 等纯旧文本编辑器中查看 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将输出所有三个差异一次,但是有没有办法将它们分成三个单独的差异文件?
以下命令 git diff --no-index --output=restapi-diff.txtlatest-restapi.jsonrestapi.json 返回退出代码 1,没有任何进一步的详细信息。使用操作结账时。
我想查看 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 diff --no-index ./dir1 ./dir2
Run Code Online (Sandbox Code Playgroud)
但是,这些目录中的某些文件我想在差异中忽略。.gitignore这些文件是否包含在我认为有意义的a 中显然并不重要。
这可能吗?
更多上下文,这是针对研讨会的,每个目录都是研讨会中的一个步骤。我希望有一种方法来展示研讨会每一步所需的更改。这些目录有一些生成的文件,我不想在输出中显示这些生成的文件。此外,我还有一些node_modules在输出中不理想的内容。
另外,我喜欢 的分页功能git diff。此外,大多数参加研讨会的人都习惯了git diff。所以我确实想使用这个而不是其他工具。
我希望 git status 也列出更改的行数,\n就像那些+和:-git pull
例子)
\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 +++---\nRun Code Online (Sandbox Code Playgroud)\n因为我在文档中找不到这样的选项,所以我尝试使用diffstat,因为它用于git pull。
\xe2\x9d\xaf git diff | diffstat -C\n package-lock.json | 1093 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------\n package.json | …Run Code Online (Sandbox Code Playgroud) git diff我\xe2\x80\x99m 面临在 Azure DevOps 管道环境中工作的挑战。这是管道脚本,用于将 git HEAD 与之前的提交进行比较,并仅复制已更改的文件。HEAD^git 命令在本地运行良好,但在 Azure 管道中会失败,因为CI 运行中没有。寻求建议,这样的比较在 Azure 中是否可行,以及我如何实现这一目标。
- 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 rebase -i并重写了一次提交。
如何显示我提交的新提交消息和旧提交消息之间的差异?(例如,来自 中的提交git reflog)
我正在参与我参与的项目的一些主题分支.我通常在提出拉取请求之前重新分支我的分支.然而,这一次,由于主人的变化,变基是一个很大的痛苦.很多冲突,更糟糕的是,在手动合并提交之后看起来只是丑陋而且松散了他们的观点.我肯定更喜欢在我的分支头和两个分支上的最新提交之间获得差异,然后将这个差异应用于主人的头部,最后创建全新的闪亮提交git add -p.所以我的问题是:如何实现它?一种可能性是简单地将master合并到我的主题分支中,但是有更优雅的解决方案吗?我相信是的.
谢谢你的帮助.
编辑:
一个文件已在主分支上移动,我的提交正在改变此文件(使用它的旧名称).
git ×10
git-diff ×10
diff ×2
azure ×1
diffstat ×1
git-commit ×1
git-merge ×1
git-rebase ×1
github ×1
jgit ×1