GIT: вернуться к старому коммиту и объединить его с мастером - PullRequest
3 голосов
/ 26 февраля 2010

Дан проект с 2 файлами: fileA и fileB. Оба были когда-то добавлены в git-хранилище. Затем я добавил fileA к .gitignore (и сбросил git-кеш), чтобы в текущем мастере присутствовал только fileB. Я бы хотел клонировать этот репозиторий на другой компьютер, но файл A отсутствует.

Следующее, что я сделал, было создание ветки из коммита, где присутствовали оба файла. Большой вопрос сейчас: как мне вернуться к основному коммиту, не теряя этот файл снова?

Извините за заголовок. Я пытался быть описательным, но ..

Ответы [ 2 ]

3 голосов
/ 27 февраля 2010

Я думаю, что ответ Джоша, вероятно, то, что вы хотите для этой ситуации, но если вы столкнетесь снова, у вас есть несколько вариантов ... Классическое слияние или вытягивание всегда будет работать, вам просто нужно указать -f, если пытаясь восстановить файлы, которые находятся в вашем происхождении. В противном случае, Git будет жаловаться.

$ git checkout master
$ git pull -f . <branch>:master

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

$ git reset 
$ git revert

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

Возвращение - для уничтожения вещей, которые произошли в прошлом. Больше похоже на «возврат» изменения.

3 голосов
/ 26 февраля 2010

Если все, что вам нужно сделать, это восстановить один файл, вы можете сделать это с помощью git checkout:

$ git checkout <revision_where_fileA_exists> fileA
$ git add fileA
$ git commit -m "Restored fileA"

Вам также придется отредактировать .gitignore, чтобы он больше не игнорировал fileA.

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