Как я могу определить, правильно ли загружен файл в git lfs? - PullRequest
0 голосов
/ 31 января 2019

Я пытаюсь добавить все под MyProject/Frameworks/ в git-lfs (хранилище больших файлов).Я не уверен , какой правильный формат для рекурсивного сопоставления всех файлов и папок в папке Frameworks. Этот ответ говорит, что правильный формат - git lfs track "MyProject/Frameworks/**", но Справочный документ Atlassian говорит, что я должен использовать git lfs track "MyProject/Frameworks/".Я попробовал оба, и они не использовали git lfs для хранения.Он пытался загрузить файлы напрямую.

Конечно, я хотел бы знать правильный формат, но что более важно, прежде чем я попытаюсь отправить свои изменения в github, я хотел бы убедиться, что совпадение и файлы делаютдействительно работает правильно.Это позволит мне повторять и пробовать новые вещи.

Я вижу две связанные команды, которые могут помочь: git lfs status и git lfs ls-files.Не ясно, какой из них мне следует использовать, и какой вывод я должен искать.Например, когда я запустил git lfs status, он показал мне тонну файлов под Git LFS objects to be committed, заставляя меня думать, что они будут добавлены в Git LFS.Однако, после попытки перейти на GitHub.com, я понял, что это явно не так.Если это помогает, вывод для этих файлов всегда имел что-то вроде (Git: edee1ad) после каждого имени файла.

Когда я пытаюсь использовать git lfs ls-files, я не уверен, нужно ли мне запускать его после git addфайлов, после их фиксации или после их нажатия.В большинстве случаев он просто показывает пустой вывод.

По сути, вопрос заключается в следующем: Если я правильно настроил git lfs, какой инструмент (например, git lfs status) мне следует использовать, и какой вывод мне следуетищите до Я пытаюсь зафиксировать / нажать?

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

1 Ответ

0 голосов
/ 31 января 2019

TL; DR

Если все настроено правильно, вы можете проверить правильность работы git LFS:

  1. git add файлом (-ами) вquestion.
  2. Выполните одно из следующих действий:
    • Запустите git lfs status и убедитесь, что рассматриваемый файл (-ы) отображается под Git LFS objects to be committed, и что в скобках указано значение LFS;или
    • Запустите git lfs ls-files и убедитесь, что соответствующие файлы появляются в этих выходных данных.

⚠️ Важно: После запуска git lfs track вы должны запустить git add, чтобы обновить состояние файлов перед вызовом git lfs status или git lfs ls-files.В противном случае вы увидите несоответствующий вывод этих команд.

Кроме того, для записи похоже, что git lfs track "MyProject/Frameworks/**" является правильным для рекурсивного сопоставления.


Настройкаи методология тестирования:

  1. git lfs track "*.lfs".Это генерирует .gitattributes.Оставьте без изменений.
  2. Создайте файл в корневом каталоге, Test.lfs.Оставьте его без обработки.
  3. Тест:

    • git lfs status: не выводятся имена файлов

      $ git lfs status
      On branch master
      Git LFS objects to be pushed to origin/master:
      
      
      Git LFS objects to be committed:
      
      
      Git LFS objects not staged for commit:
      
      
      $
      
    • git lfs ls-files: нет вывода

      $ git lfs ls-files
      $
      
  4. Добавить git add Test.lfs.

  5. Тест:

    • git lfs status: Test.lfs теперь будет перечисляться с суффиксом LFS.

      $ git lfs status
      On branch master
      Git LFS objects to be pushed to origin/master:
      
      
      Git LFS objects to be committed:
      
              Test.lfs (LFS: 2ab9f1e)
      
      Git LFS objects not staged for commit:
      
      
      $
      
    • git lfs ls-files: Test.lfs теперь будетв списке.

      $ git lfs ls-files
      2ab9f1e447 * Test.lfs
      $
      
  6. Подтверждение изменений.

  7. Тест:

    • git lfs status: Test.lfs переместится в раздел «быть нажатым».У него будет суффикс, такой как набор цифр / букв.

      $ git lfs status
      On branch master
      Git LFS objects to be pushed to origin/master:
      
              Test.lfs (2ab9f1e44720efb7a26553e06b667a270320efb3e906553b3f9e0702538a2b3f)
      
      Git LFS objects to be committed:
      
      
      Git LFS objects not staged for commit:
      
      
      $
      
    • git lfs ls-files: Test.lfs будет по-прежнему перечисляться.

      $ git lfs ls-files
      2ab9f1e447 * Test.lfs
      $
      
  8. Нажмите изменения.Включая добавление / принятие / отправку .gitattributes.
  9. Тест:

    • git lfs status: больше не выводятся имена файлов

      $ git lfs status
      On branch master
      Git LFS objects to be pushed to origin/master:
      
      
      Git LFS objects to be committed:
      
      
      Git LFS objects not staged for commit:
      
      
      $
      
    • git lfs ls-files: продолжает вывод отслеживаемого файла

      $ git lfs ls-files
      2ab9f1e447 * Test.lfs
      $
      

Выводы:

  • Git LFS objects not staged for commit Раздел кажется вводящим в заблуждение, так как он никогда не отображал никаких файлов, даже тех, которые должны были отслеживаться LFS.
  • Если вы попытаетесь выполнить предыдущий эксперимент с отслеживаемым файлом, не относящимся к git-lfs, вы также заметите, чтоон отображается под Git LFS objects to be committed неправильно.Это не объект Git LFS.Вы можете сказать, что на самом деле это не объект Git LFS, а посмотреть, как он заканчивается.Если он заканчивается на (Git: 111111111), он не будет передан в LFS.
  • Чтобы избежать вышеуказанных недоразумений, вы можете предпочесть git lfs ls-files над git lfs status, чтобы определить, будет ли что-то частьюgit-lfs или нет.
  • Еще один вопрос: некоторые приложения, такие как Xcode, странным образом выводят git add файлов, в результате чего то, что должно было иметь четкие совпадения, не учитывается для Git LFS.Решение состоит в том, чтобы разархивировать файлы, а затем повторно запустить их.
...