Git pull, если папка в удаленном содержит пробелы - PullRequest
0 голосов
/ 30 августа 2018

Я просто хочу получить удаленное управление, но не могу сделать это правильно, потому что в удаленном репо появилась папка с пробелом в имени. Затем после git pull я получаю сообщение для всех файлов в этой папке, что git не может его создать, и все эти файлы помещаются в неустановленные изменения как «удаленные». enter image description here

После вытащить эту ситуацию:

$ git status
    On branch develop
    Your branch is up-to-date with 'origin/develop'.
    Changes not staged for commit:
      (use "git add/rm <file>..." to update what will be committed)
      (use "git checkout -- <file>..." to discard changes in working directory)

        deleted:    ../support/UIKit/Layouts/Product /ProductBodyLayout.swift
               (and other files)

no changes added to commit (use "git add" and/or "git commit -a")

Я знаю корень этой проблемы - командная строка, использующая git (MINGW32), интерпретирует пространство как разделитель, чтобы этого не происходило, в Windows мы должны использовать пространство в пути с \. Но я не понимаю, что мне делать именно сейчас, что сделано операция git pull без каких-либо удаленных файлов? Мне нужно удалить эти файлы из удаленного, но я не могу оформить заказ ни на одном из этих файлов, и git add перемещает файлы на промежуточный уровень.

Если я попробую git add:

$ git add ../support/UIKit/Layouts/Product\ /ProductBodyLayout.swift

Добавляет «удаленный» файл в постановку:

 $ git status
On branch develop
Your branch is up-to-date with 'origin/develop'.
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        deleted:    ../support/UIKit/Layouts/Product /ProductBodyLayout.swift

Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        deleted:    ../support/UIKit/Layouts/Product /ProductButtonLayout.swift
        (and other files)

Если я пытаюсь оформить заказ, я получаю сообщение об ошибке:

 $ git checkout -- ../support/UIKit/Layouts/Product\ /ProductBodyLayout.swift
error: unable to create file support/UIKit/Layouts/Product /ProductBodyLayout.swift: No such file or directory

Ответы [ 3 ]

0 голосов
/ 30 августа 2018

Если вы внимательно прочитаете сообщение от git, оно даст несколько советов. Вероятно, вы хотите:

git checkout -- <file>...

Только не забудьте поставить кавычки вокруг имени файла. Затем вы можете переименовать файл с помощью git mv и git commit.

0 голосов
/ 30 августа 2018

Похоже, что проблема с mingw обработки пространства. Вопрос переполнения стека при обработке пробелов mingw .

Вы можете использовать двойные кавычки (") вокруг имени файла, чтобы решить эту проблему. Или скопируйте файлы вручную и добавьте их локально как новые файлы и удалите пробелы, чтобы эта проблема не возникала. Проблема в том, что все история исчезла для файла и рассматривается как новый файл.

0 голосов
/ 30 августа 2018

Размещение двойных кавычек вокруг полного пути к файлу должно работать:

git add "../support/UIKit/Layouts/Product /ProductBodyLayout.swift"

Вы также можете покинуть пространство:

git add ../support/UIKit/Layouts/Product\ /ProductBodyLayout.swift

Но, хотя это решает насущную проблему, двигаясь вперед, вы можете избежать использования имен файлов / путей, в которых есть символы, которые должны быть экранированы. Это потому, что вам придется продолжать убегать, как это.

Если вы хотите отказаться от операции удаления, воспользуйтесь советом bash и используйте это:

git checkout -- "../support/UIKit/Layouts/Product /ProductBodyLayout.swift"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...