Как я могу выбросить локальные изменения в моем Git-репозитории при извлечении новой версии из github? - PullRequest
5 голосов
/ 25 апреля 2011

Я начал изучать git за последние несколько дней, и у меня есть основной вопрос.

Представьте себе такую ​​ситуацию:

Вы создаете пустую папку и там создаете файл foo.txt.

Чтобы отправить данные в удаленный репозиторий (например, github), вы выполните следующие команды:

  • git init -> для инициализации хранилища в папке
  • git add . -> для добавления в индекс всех файлов в папке, в данном случае foo.txt
  • git commit -m "First commit" -> Мы делаем первый коммит
  • git remote add origin git@github.com:username/gitrepository.git -> Добавляем репозиторий github
  • git push origin master -> Загружаем изменения в удаленный репозиторий

    1. Теперь в репозитории github у вас есть только файл foo.txt.

    2. Итак, вы находитесь на другом компьютере и хотите использовать репозиторий, поэтому вы создаете пустую папку и извлекаете данные из удаленного репозитория.
      Затем вы создаете файл с именем bar.txt, удаляете foo.txt, добавляете файл (bar.txt) в индекс, делаете коммит и отправляете изменения в удаленный репозиторий.

    3. Теперь в репозитории у нас есть только файл bar.txt

    4. Но теперь на первой машине у нас все еще есть файл foo.txt, и если мы извлекаем файлы из удаленного репозитория, у нас есть foo.txt и bar.txt.

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

Как вам это удается?

Ответы [ 2 ]

5 голосов
/ 25 апреля 2011

Я думаю, что вы пропустили шаг в 2.

Вы должны удалить файл foo.txt из индекса.Требуется специальная команда («git add.» Только помещает файл в индекс, но не удаляет файлы):

  • git rm foo.txt
  • git add -u (удаляет из индекса все файлы, которых больше нет в рабочей области)

Затем фиксируйте.

На шаге 3 после извлечения на первом компьютере файл foo должен был исчезнуть.

1 голос
/ 25 апреля 2011

Как работает git, вы всегда будете иметь эти файлы в вашем хранилище (то есть в папке .git вашего хранилища).Разница в том, что на шаге 4. как только вы извлекаете изменения, у вас остается исходная рабочая копия (git будет сливаться автоматически, только если вы не внесли изменений).Я думаю, что вы на одно слияние с тем, что вы хотите:)

Я нахожу этот Шпаргалка Git очень полезным.

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