Git重置具有typechange状态的文件

时间:2014-07-02 14:11:50

标签: git symlink

在大型存储库中查找和替换时,我得到了一堆具有typechange状态的文件。这些主要是符号链接。

而不是

git checkout -- eachfile.name

有没有办法只重置typechange文件?

3 个答案:

答案 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