git diff --name-only =====> tr into one line

本文深入探讨了Git中diff命令的使用技巧,包括显示文件状态、冲突文件、以及特定目录下修改过的文件。通过实际操作示例,读者可以学习如何高效地查看代码变更,这对于代码审查和版本控制至关重要。

 git diff --name-status  

[lake@localbuildroot]$ git diff  master   HEAD   --name-status       --  package/weston              A       package/weston/0001-os-compatibility-define-CLOCK_BOOTTIME-when-not-avai.patch
D       package/weston/0001-tests-include-fcntl.h-for-open-O_RDWR-O_CLOEXEC-and-.patch
D       package/weston/0002-libweston-backend-drm-might-need-EGL.patch
A       package/weston/0002-shared-struct-timespec-is-in-time.h.patch
D       package/weston/0003-pipewire-add-support-for-0.3-API.patch
D       package/weston/0004-pipewire-fix-null-deref-in-0-3-API.patch
M       package/weston/Config.in
M       package/weston/weston.hash
M       package/weston/weston.mk
[lhu3@zch127bld08 buildroot]$



git diff --name-only

git diff --name-only --diff-filter=U

 

Show conflict files only 

git diff --name-only --diff-filter=U

lake@localhost:~/local/git-aosp-AndroidN7.1.x$ git diff --name-only   c3335b914942880ff09771eca29d458f7226e5bb    --  bootable/
bootable/bootloader/lk/app/aboot/aboot.c
bootable/bootloader/lk/dev/gcdb/display/include/panel_ili9881c_720p_video.h
bootable/bootloader/lk/dev/gcdb/display/include/panel_ili9881c_720p_video_yifeng.h
bootable/bootloader/lk/dev/gcdb/display/include/panel_otm9605a_qhd_video.h
bootable/bootloader/lk/dev/gcdb/display/include/panel_st7703_720p_video.h
bootable/bootloader/lk/dev/gcdb/display/include/panel_st7703_720p_video_new.h
bootable/bootloader/lk/platform/msm_shared/debug.c
bootable/bootloader/lk/platform/msm_shared/mmc_sdhci.c
bootable/bootloader/lk/target/msm8909/oem_panel.c
lake@localhost:~/local/git-aosp-AndroidN7.1.x$ git diff --name-only   c3335b914942880ff09771eca29d458f7226e5bb    --  bootable/   |tr  '\n'   ' '
bootable/bootloader/lk/app/aboot/aboot.c bootable/bootloader/lk/dev/gcdb/display/include/panel_ili9881c_720p_video.h bootable/bootloader/lk/dev/gcdb/display/include/panel_ili9881c_720p_video_yifeng.h bootable/bootloader/lk/dev/gcdb/display/include/panel_otm9605a_qhd_video.h bootable/bootloader/lk/dev/gcdb/display/include/panel_st7703_720p_video.h bootable/bootloader/lk/dev/gcdb/display/include/panel_st7703_720p_video_new.h bootable/bootloader/lk/platform/msm_shared/debug.c bootable/bootloader/lk/platform/msm_shared/mmc_sdhci.c bootable/bootloader/lk/target/msm8909/oem_panel.c lake@localhost:~/local/git-aosp-AndroidN7.1.x$
lake@localhost:~/local/git-aosp-AndroidN7.1.x$
lake@localhost:~/local/git-aosp-AndroidN7.1.x$
 

Git 中,可以通过 `git diff` 命令结合 `xargs` 和 `zip` 工具将差异文件打包成 ZIP 文件。具体操作步骤如下: 1. 使用 `git diff --name-only` 获取当前分支与目标分支或提交之间的差异文件列表。 2. 将文件列表通过管道传递给 `xargs`,再由 `xargs` 调用 `zip` 工具进行打包。 以下是一个完整的命令示例: ```bash git diff --name-only branch_name | xargs zip diff_files.zip ``` 其中 `branch_name` 是目标分支名称。该命令会将当前分支与 `branch_name` 分支之间的所有差异文件打包为 `diff_files.zip` 文件。 如果需要比较的是特定提交(commit),可以使用如下命令: ```bash git diff --name-only commit_hash | xargs zip diff_files.zip ``` 该命令将与指定提交之间的差异文件打包。 需要注意以下几点: - 确保 `xargs` 和 `zip` 工具已安装在系统中。 - 如果文件路径中包含空格,建议使用 `-0` 选项处理,命令如下: ```bash git diff -z --name-only branch_name | xargs -0 zip diff_files.zip ``` 该命令使用 `-z` 选项让 `git diff` 输出使用空字符分隔文件名,`xargs -0` 则表示以空字符作为输入分隔符,从而正确处理包含空格的文件路径。 ### 示例脚本 可以将上述逻辑封装为一个 Bash 脚本,便于重复使用: ```bash #!/bin/bash # 指定目标分支或提交 TARGET=$1 # 输出 ZIP 文件名 OUTPUT="diff_files.zip" # 清空旧文件(如果存在) rm -f $OUTPUT # 获取差异文件并打包 git diff -z --name-only $TARGET | xargs -0 zip $OUTPUT echo "已将差异文件打包为 $OUTPUT" ``` 保存为 `git_diff_zip.sh` 并赋予执行权限后,可运行如下命令: ```bash ./git_diff_zip.sh branch_name ``` ### 注意事项 - 如果差异文件较多,建议使用 `-r` 参数递归打包。 - 若目标系统为 Windows,可以使用 `zip` 工具生成的 ZIP 文件进行跨平台兼容。 ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值