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