GIT 新建/修改/删除文件列表

问题描述 投票:0回答:11

有没有办法获取本地/远程存储库中所有新的/删除的/修改的目录/文件的列表,并在 Git 中相互关联?

git file list diff
11个回答
62
投票

列出这些文件的最佳方法是使用

git status --porcelain

例如:

git status --porcelain | awk 'match($1, "D"){print $2}' 

显示已从本地副本中删除的跟踪文件。您可以通过向管道附加适当的命令来删除所有这些文件:

git status --porcelain | awk 'match($1, "D"){print $2}' | xargs git rm

39
投票

我不确定你的意思是什么,但如果你想要一个单独的列表(例如所有修改的文件),你可以使用

git ls-files
和正确的标志(对于修改的文件是
-m
)。如果您想要一次获得所有这些信息,您可以使用
git status --porcelain
来获取状态的脚本可解析输出。


28
投票

要获取当前更改的文件的文件名和状态,您可以简单地:

git diff --name-status

您将得到如下的裸输出:

M       a.txt
M       b.txt

现在,将输出通过管道传输到

cut
以提取第二列:

git diff --name-status | cut -f2

然后您将只得到文件名:

a.txt
b.txt

19
投票

执行此操作的一种方法是使用

whatchanged
命令:

$ git whatchanged

这显示了树中每个提交更改了哪些文件,也可用于查看具体信息。来看看

git help whatchanged


19
投票

使用

git add
的试运行 (-n) 选项:

git add -A -n


13
投票

您可能想要的是这样的:

git fetch     # update what you know about the remote repo
git diff --name-status master origin/master

但是很难准确说出您想要与问题不同的分支。


7
投票

就我而言,我需要所有新的/修改的/未跟踪的文件的列表。下面的命令就达到了目的:

git status --porcelain | cut -c 1-3 --complement

cut -c 1-3 --complement
部分用于删除三个初始状态字符,以便我可以使用
xargs
对文件运行任意脚本。例如,针对所有新的/更改的 JavaScript 文件(在 Nodejs 存储库中)运行 eslint:

git status --porcelain | cut -c 1-3 --complement | egrep .js$ | xargs npm run lint -- --fix

2
投票

与命令一起使用

--name-status

带有标签的示例:

git diff v1.0.1 v1.0.2 --name-status

提交示例:

git diff b79810fc4d be69e41d1c --name-status

它将列出所有更新的文件及其状态:

M
- 修改
D
- 已删除
A
- 添加


2
投票

git diff --name-only
可以完成工作,但它仅显示跟踪的文件。为了包含新文件,您可以(临时)使用
git add .
添加所有文件,现在
git diff --cached --name-only
应列出所有已更改的文件。之后,您可以
git restore --staged .
取消暂存所有文件。


0
投票

执行

git diff
,您将看到所有已更改的文件以及这些文件中更改内容的详细信息


0
投票

要 git 添加、修改、删除和新文件的所有文件,您可以使用两个命令

git ls-files -o
获取所有新文件,
git checkout
获取删除文件、修改文件和添加文件

git ls-files -o && git checkout

如果您在文件之前看到,我如何知道已删除、修改、删除的文件和新文件

  • 一个
    this is added file to git
  • D
    this is deleted file
  • M
    this is Modified file
  • Nothing before the file this is a new file

看这个 gif 图片

© www.soinside.com 2019 - 2024. All rights reserved.