30.2023年06月04日.md
工作中遇到一个情况,有的电脑卡,有的电脑不卡。这时候可能继续将卡的电脑中的文件copy到不卡的电脑中,但是我又不想将多余的代码copy过来。
这时候可以使用git的命令,将卡的电脑上的代码中的变更过的代码copy过来。这样
# mac
git diff-tree -r --no-commit-id --name-only {commit_id} | xargs tar -rf {file_name}.tar
# windows
git diff {commit_id} HEAD --name-only | xargs tar -rf {file_name}.tar
# linux
sudo git diff {commit_id} HEAD --name-only | cpio -pvdmu {file_name}.tar
打成git 补丁包patch文件,更加方便,使用git一键还原
# 提取当前未修改的内容
git diff > changes.patch
# 还原提取的内容
patch -p1 < changes.patch
# 交互式的自己指定路径的方式来还原
patch < changes.patch
# 扩展:提取指定路径下当前未修改的内容
git diff {path_name} > changes.patch
但是以上的patch做法有缺陷
它无法提取出你新创建的文件。所以需要换种方式,使用 format-patch 。
# 提取最近一次commit的内容,会生成带编号的补丁文件,HEAD表示当前的一次记录,-1 表示基于当前记录的前一次。HEAD 可以换成commit_id,-1可以改成-2或者-3,表示前面几次的总集
git format-patch -1 HEAD
# 提取最近一次commit的内容,自定义命名
git format-patch -1 HEAD --stdout > {file_name}.patch
# 还原提取的内容
patch -p1 < changes.patch
# 交互式的自己指定路径的方式来还原
patch < changes.patch
还有一个就是mac电脑上查看隐藏文件
# 显示隐藏文件
defaults write com.apple.finder AppleShowAllFiles TRUE
# 启用
killall Finder
# 隐藏掉隐藏文件
defaults write com.apple.finder AppleShowAllFiles FALSE
# 启用
killall Finder
上次更新时间: 10年18月2023日 01时57分53秒