在大型存储库中查找和替换时,我得到了一堆具有typechange状态的文件.这些主要是符号链接.
而不是
git checkout -- eachfile.name
Run Code Online (Sandbox Code Playgroud)
有没有办法只重置typechange文件?
muz*_*uzz 46
git status | grep typechange | awk '{print $2}' | xargs git checkout
Run Code Online (Sandbox Code Playgroud)
现有答案的味道,但我更喜欢它:
git status --porcelain | awk '{if ($1=="T") print $2}' | xargs git checkout
Run Code Online (Sandbox Code Playgroud)
--porcelain 专为这种用途而设计。
请注意,此 awk 答案和现有答案可以用包含空格、换行符等的文件名破坏,在这种情况下我们可以使用。
git status -z | perl -0 -ne 'print $1 if /^\s*T\s*(.+)$/s' | xargs -0 git checkout
Run Code Online (Sandbox Code Playgroud)
git status -z是真正推荐用于这种用途的,并且 null 终止每个条目。perl-0处理这个问题,-ne为每一行(或真正的“条目”)处理给定的命令。$1指这里的第一个捕获组,它将包括文件名和空终止符。
在大多数情况下,最好从存储库中删除符号链接。如果您在不同的操作系统下工作,那么存储库中的链接就会出现问题。
当您删除它并将其设置到新位置时,您的文件将被修改。
某些 Java Git 客户端存在符号链接问题。他们试图跟随他们,但你会得到一个错误。我在 Jenkins 客户端上遇到了这个问题。
要将所有符号链接添加到.gitignore您可以在 Linux 下运行以下命令
find /your/directory -type l >> .gitignore
| 归档时间: |
|
| 查看次数: |
12338 次 |
| 最近记录: |