如何存储“git pull”的输出,而不删除文件、数字和重复,以便在文本文件中列出新文件?
我主要使用鱼而不是Bash和Zsh。我想从3月份到今天输出整个快进的git pull,但是只有修改过的和新的文件,没有添加、删除和修改的次数,没有重复,才能列出文本文件的新图标,所以我会将丢失的新图标复制到另一个分支 例如:如何存储“git pull”的输出,而不删除文件、数字和重复,以便在文本文件中列出新文件?,git,sorting,fish,uniq,Git,Sorting,Fish,Uniq,我主要使用鱼而不是Bash和Zsh。我想从3月份到今天输出整个快进的git pull,但是只有修改过的和新的文件,没有添加、删除和修改的次数,没有重复,才能列出文本文件的新图标,所以我会将丢失的新图标复制到另一个分支 例如: git pull > new_icons.txt February 7 Fast-forward icon.svg | 3+++ February 24 Fast-forward icon.svg | 2-- March 7 Fast-forward
git pull > new_icons.txt
February 7
Fast-forward
icon.svg | 3+++
February 24
Fast-forward
icon.svg | 2--
March 7
Fast-forward
icon.svg | 1++
我想使用这些命令,但我需要的选项,以排除删除的文件,重复和数量的增加,删除和修改
git pull > new_icons.txt 2 > &1
git pull |& tee new_icons.txt
git pull &> new_icons.txt
如果您不知道添加、删除和修改的数量,例如:
git pull > new_icons.txt
February 7
Fast-forward
icon.svg | 3+++
February 24
Fast-forward
icon.svg | 2--
March 7
Fast-forward
icon.svg | 1++
你可以看到|,数字,+和-。我想在文本文件中输出时排除它们
复制品是什么
例如:
git pull > new_icons.txt
February 7
Fast-forward
icon.svg | 3+++
February 24
Fast-forward
icon.svg | 2--
March 7
Fast-forward
icon.svg | 1++
git pull的输出只是在pull之前/之后的提交之间的git diff-stat
e、 g:运行git diff-stat d649d3e f0c56e2,您将看到与屏幕截图中相同的输出
找出你想要的根提交,并使用git diff在3月份确定回购协议的状态
对于您的用例,git diff还有其他有用的选项:
-名称状态将显示受影响文件的名称,前缀为A、M或D resp:Added、Modified或Deleted
-仅名称将显示文件名,而不显示其他信息
-diff filter=[A | M | D]将允许您仅显示与筛选器匹配的文件的信息
请参阅完整的文档:
我简化了diff filter和name status的描述,可以找到完整的文档并
您要查找的列表是:
git diff --no-renames --diff-filter=AM --name-only [basecommit] [branch]
由于您想在其他分支上应用修补程序,您可能还需要删除文件的列表来删除它们…:
git diff --no-renames --diff-filter=D --name-only [basecommit] [branch]
以下列表有助于了解两次提交之间发生的情况:
git diff --name-status [basecommit] [branch]
git pull的输出只是在pull之前/之后的提交之间的git diff-stat
e、 g:运行git diff-stat d649d3e f0c56e2,您将看到与屏幕截图中相同的输出
找出你想要的根提交,并使用git diff在3月份确定回购协议的状态
对于您的用例,git diff还有其他有用的选项:
-名称状态将显示受影响文件的名称,前缀为A、M或D resp:Added、Modified或Deleted
-仅名称将显示文件名,而不显示其他信息
-diff filter=[A | M | D]将允许您仅显示与筛选器匹配的文件的信息
请参阅完整的文档:
我简化了diff filter和name status的描述,可以找到完整的文档并
您要查找的列表是:
git diff --no-renames --diff-filter=AM --name-only [basecommit] [branch]
由于您想在其他分支上应用修补程序,您可能还需要删除文件的列表来删除它们…:
git diff --no-renames --diff-filter=D --name-only [basecommit] [branch]
以下列表有助于了解两次提交之间发生的情况:
git diff --name-status [basecommit] [branch]
它是否只输出唯一的文件以消除重复?如果没有,我会添加sort-z | uniq-d吗?是的,一个文件一次只能出现一次,这只是最后一个问题。git diff是否以区分大小写的形式按字母顺序排序?我认为在实践中会这样,但我不知道这是否是git diff的一个硬保证。只需对结果进行排序,您就可以确定了。它是否只输出唯一的文件来消除重复?如果没有,我会添加sort-z | uniq-d吗?是的,一个文件一次只能出现一次,这只是最后一个问题。git diff是否以区分大小写的形式按字母顺序排序?我认为在实践中会这样,但我不知道这是否是git diff的一个硬保证。只需对结果排序,您就可以确定了。