Git: отменить локальные изменения; мерзавец добавить. + мерзавец? - PullRequest
12 голосов
/ 14 октября 2011

Нужна помощь в выяснении пары общих рабочих процессов с Github. Я родом из VS TFS, так что прости меня.

Отмена ожидающих изменений

Допустим, я клонировал git-репозиторий в мою локальную файловую систему. На этом этапе локальные файлы проекта в точности совпадают с данными в удаленном хранилище.

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

Как мне отменить эти локальные изменения, восстановив их в текущих версиях в хранилище?

Передача всех изменений

Всякий раз, когда я изменяю содержимое локальных файлов в своем клоне репозитория или добавляю новые файлы и хочу отправить изменения, я запускаю «git add.», «Git commit» с моими комментариями, затем «git push» для мой хозяин.

Однако, когда я локально удаляю файл, который отслеживается в хранилище, «git add». не фиксирует изменения rm. Вместо этого мне нужно "git rm [имя файла]", прежде чем я "git commit", чтобы обновить репозиторий. Хотя я всегда забываю это делать.

Есть ли команда git, которая будет "git add". и "git rm" любые файлы, которые я удалил локально, за один шаг? После изменения локальных файлов и удаления пары, я бы хотел выполнить только одну команду, которая фиксирует все мои изменения, прежде чем я сделаю git commit.

Ответы [ 2 ]

23 голосов
/ 14 октября 2011

Как мне отменить эти локальные изменения, восстановив их в текущих версиях в хранилище? `

git reset --hard

(это приведет к сбросу вашего индекса и рабочего каталога в HEAD)

Есть ли команда git, которая будет git add . и git rm любые файлы, которые я удалил локально, за один шаг? `

git add -u

(он не будет добавлять новые файлы)

Если вы хотите добавить новые файлы, удалите rm 'ed файлы и внесите изменения в файлы:

git add -A
3 голосов
/ 14 октября 2011

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

git reset --hard HEAD

Кроме того, я предлагаю прочитать полезную страницу http://progit.org/2011/07/11/reset.html длялучше понять, как работает сброс и что такое индекс, и почему git add и git rm являются отдельными командами.

...