Skip to content

搞英语 → 看世界

翻译英文优质信息和名人推特

Menu
  • 首页
  • 作者列表
  • 独立博客
  • 专业媒体
  • 名人推特
  • 邮件列表
  • 关于本站
Menu

打开 Git 分支中所有已修改的文件

Posted on 2025-09-19

今天,一位同事咨询如何打开特定 Git 分支中所有已更改的文件。他们正在审查一个大型拉取请求,有时在本地编辑器中审查文件比在 GitHub 的代码审查界面中更容易。您可以查看整个文件、运行测试或本地构建,并获得比 GitHub diff 更详细的上下文信息。

这是我建议的片段:

 git diff --name-only " $BRANCH_NAME " $( git merge-base origin/main " $BRANCH_NAME " ) \ | xargs open -a "Visual Studio Code"它使用了一些巧妙的 Git 功能,所以让我们来分解一下。 git diff --name-only " $BRANCH_NAME " $( git merge-base origin/main " $BRANCH_NAME " ) \ | xargs open -a "Visual Studio Code"

工作原理

此命令分为三个部分:

  1. 找出 dev 分支与 main 分支的分歧点。我们可以使用git-merge-base :

     $ git merge-base origin/main " $BRANCH_NAME " 9ac371754d220fd4f8340dc0398d5448332676c3

    此命令为我们提供了主分支和开发分支的共同祖先——这是开发人员创建其分支时的主分支的提示。

    在小型代码库中,主分支可能自 dev 分支创建以来就没有变化过。但在大型代码库中,由于许多人都在进行修改,主分支可能自 dev 分支创建以来就发生了变化。

    这是一张快速图片:

    共同祖先 主分支 开发分支 Git 历史记录的简单图示。主分支上有一系列线性提交,然后是后来创建的开发分支。创建分支的提交以红色突出显示。

    这告诉我们正在审查哪些提交——这个分支中有哪些变化?

  2. 获取 dev 分支中已更改的文件列表。我们可以使用git-diff查看两次提交之间的差异。如果添加--name-only标志,它只会打印包含更改的文件名列表,而不是完整的差异。

     $ git diff --name-only " $BRANCH_NAME " $( git merge-base … ) assets/2025/exif_orientation.py src/_drafts/create-thumbnail-is-exif-aware.md src/_images/2025/exif_orientation.svg

    因为我们正在比较 dev 分支的尖端和 dev 分支与主分支分歧点之间的差异,所以这会打印出 dev 分支中已更改的文件列表。

    (我最初建议使用git diff --name-only "$BRANCH_NAME" origin/main ,但这是错误的。这会打印两个分支之间所有不同的文件,其中包括在创建 dev 分支后合并到 main 的更改。)

  3. 在文本编辑器中打开文件。我建议通过管道连接到xargs并open ,但有很多方法可以做到这一点:

     $ git diff … | xargs open -a "Visual Studio Code"

    xargs命令对于重复执行同一件事非常有用——在本例中,就是在 VS Code 中打开一堆文件。你输入一个空格分隔的字符串,它会将字符串拆分成不同的部分,然后逐个对每个部分运行相同的命令。这相当于运行:

     open -a "Visual Studio Code" "assets/2025/exif_orientation.py" open -a "Visual Studio Code" "src/_drafts/create-thumbnail-is-exif-aware.md" open -a "Visual Studio Code" "src/_images/2025/exif_orientation.svg"

    open命令打开文件, -a标志告诉它使用哪个应用程序。我们在工作中主要使用 VS Code,但您也可以在此处传递任何文本编辑器。

    阅读open的手册页时,我想起可以一次打开多个文件,所以不用xargs也能做到这一点。我本能地选择了xargs ,因为我对它非常熟悉,而且它是一种可靠的方法,可以接受一个只需要输入的命令,然后通过多个输入来运行它。

[如果这篇文章的格式在你的阅读器中看起来很奇怪,请访问原始文章]

原文: https://alexwlchan.net/2025/review-files-in-text-editor/?ref=rss

本站文章系自动翻译,站长会周期检查,如果有不当内容,请点此留言,非常感谢。
  • Abhinav
  • Abigail Pain
  • Adam Fortuna
  • Alberto Gallego
  • Alex Wlchan
  • Anil Dash
  • Answer.AI
  • Arne Bahlo
  • Ben Carlson
  • Ben Kuhn
  • Bert Hubert
  • Big Technology
  • Bits about Money
  • Brandon Skerritt
  • Brian Krebs
  • ByteByteGo
  • Chip Huyen
  • Chips and Cheese
  • Christopher Butler
  • Colin Percival
  • Cool Infographics
  • Dan Sinker
  • David Walsh
  • Dmitry Dolzhenko
  • Dustin Curtis
  • eighty twenty
  • Elad Gil
  • Ellie Huxtable
  • Ethan Dalool
  • Ethan Marcotte
  • Exponential View
  • FAIL Blog
  • Founder Weekly
  • Geoffrey Huntley
  • Geoffrey Litt
  • Greg Mankiw
  • HeardThat Blog
  • Henrique Dias
  • Herman Martinus
  • Hypercritical
  • IEEE Spectrum
  • Investment Talk
  • Jaz
  • Jeff Geerling
  • Jonas Hietala
  • Josh Comeau
  • Lenny Rachitsky
  • Li Haoyi
  • Liz Danzico
  • Lou Plummer
  • Luke Wroblewski
  • Maggie Appleton
  • Matt Baer
  • Matt Stoller
  • Matthias Endler
  • Mert Bulan
  • Mind Matters
  • Mostly metrics
  • Naval Ravikant
  • News Letter
  • NextDraft
  • Non_Interactive
  • Not Boring
  • One Useful Thing
  • Phil Eaton
  • Product Market Fit
  • Readwise
  • ReedyBear
  • Robert Heaton
  • Rohit Patel
  • Ruben Schade
  • Sage Economics
  • Sam Altman
  • Sam Rose
  • selfh.st
  • Shtetl-Optimized
  • Simon schreibt
  • Slashdot
  • Small Good Things
  • Steph Ango
  • Stephen Wolfram
  • Steve Blank
  • Taylor Troesh
  • Telegram Blog
  • The Macro Compass
  • The Pomp Letter
  • thesephist
  • Thinking Deep & Wide
  • Tim Kellogg
  • Understanding AI
  • Wes Kao
  • 英文媒体
  • 英文推特
  • 英文独立博客
©2025 搞英语 → 看世界 | Design: Newspaperly WordPress Theme