Git Перемещение файлов в папки - PullRequest
15 голосов
/ 11 февраля 2012

Я новичок в git и управлении версиями в целом, и у меня возник вопрос по поводу перемещения файлов.У меня есть мастер репо на GitHub с 6 исходными файлами.

Я проделал большую работу над проектом, и теперь моя локальная ветвь содержит две папки с исходниками в них.

Структура каталогов была похожа на:

Мастер:

  • Файл 1
  • Файл 2
  • Файл 3
  • Файл4
  • Файл 5
  • Файл 6

Где моя локальная ветка теперь выглядит так:

Новая папка 1:

  • Новый файл 1
  • Новый файл 2
  • Новый файл 3

Новая папка 2:

  • Файл 1
  • Файл 2
  • Файл 3
  • Файл 4
  • Файл 5
  • Файл 6

Какя могу переместить свою локальную структуру в основную ветку, не теряя историю коммитов на старых файлах?

Ответы [ 4 ]

11 голосов
/ 11 февраля 2012

Просто коммит.Git обвиняют и т.д., как правило, довольно хорошо справляются с автоматическим обнаружением ходов.

7 голосов
/ 11 февраля 2012

git на самом деле не отслеживает «перемещения» файлов, а выводит их по запросу из аналогичного контента.Итак, просто сделайте переезд и добавьте / удалите файлы в зависимости от ситуации.(В будущем вы упростите жизнь инструментам, если не будете вносить изменения в контент, а также не будете перемещать их в одном коммите.)

Затем, чтобы просмотреть журнал учета перемещений, используйте -M, -C или их варианты до git log.Подобные флаги применимы к другим инструментам, и вы должны прочитать справку, чтобы понять детали того, что они делают.

Если вы используете git mv для файла, он просто выполняет git rm и git addвы.

4 голосов
/ 11 февраля 2012

Другие постеры верны, однако, если вы хотите подтвердить, что git будет видеть их как ходы (а не комбинацию удаления / создания), запустите git status.Вы должны увидеть:

# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   renamed:    oldfile.txt -> newFolder/newfile.txt
0 голосов
/ 27 апреля 2017

В github, если у вас не слишком много файлов для перемещения, интересной альтернативой является редактирование файла и изменение его имени на:

folder_to_move_into/file_name

Когда вы фиксируете файл перемещаетсяв папку.Если папка не существует, она будет создана.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...