2016-10-20 2 views
2

У меня была куча файлов в каталоге git, которые не отслеживались. Я допустил ошибку, выполнив git add ., затем , совершив и нажав Изменения. Как я могу вернуться к тому, где файлы, которые были отслежены до того, как этот коммит снова не проверен, но все же в каталоге (git reset --hard удалили все файлы, а не хорошо для меня, вместо того, чтобы их снова отследить). У меня есть много файлов в разных местах, которые нужно не отслеживать, поэтому git reset <FILE> не будет работать для меня.Undo Добавить файлы в Git

+0

Возможный дубликат [Как отменить «git add» перед фиксацией?] (Http://stackoverflow.com/questions/348170/how-to-undo-git-add-before-commit) – jjst

+1

@jjst, пожалуйста, см. редактирует, почему мой отличается. Кроме того, моя была после фиксации, а не раньше – theEpsilon

+0

@ theEpsilon Вы единственный пользователь репо? Вам необходимо [отменить «git push»] (http://stackoverflow.com/questions/1270514/undoing-a-git-push). – legends2k

ответ

1
$ git commit -m "Something terribly misguided"    (1) 
$ git reset HEAD~           (2) 
<< edit files as necessary >>        (3) 
$ git add ...            (4) 
$ git commit -c ORIG_HEAD 
  1. Это то, что вы хотите, чтобы отменить
  2. Это оставляет ваше рабочее дерево (состояние файлов на диске) без изменений, но расстегивает фиксации и оставляет изменения, совершенные unstaged (так они будут отображаются как «Изменения не поставлены для фиксации» в статусе git, и вам нужно будет добавить их еще до совершения). Если вы хотите добавить дополнительные изменения в предыдущую фиксацию или изменить сообщение commit1, вместо этого вы можете использовать git reset --soft HEAD ~, который похож на сброс HEAD, но оставляет ваши существующие изменения.
  3. Внести исправления в файлы рабочих деревьев.
  4. git добавить все, что вы хотите включить в свою новую фиксацию.
  5. Зафиксируйте изменения, повторно используя старое сообщение фиксации. сброс скопировал старую голову в .git/ORIG_HEAD; commit с -c ORIG_HEAD откроет редактор, который изначально содержит сообщение журнала из старого фиксации и позволяет вам его редактировать. Если вам не нужно редактировать сообщение, вы можете использовать опцию -C.

Источник: How to undo last commit(s) in Git?

1

Во-первых, вы должны вернуться последней фиксации и вернуть все файлы обратно в тамбур по:

git reset --soft HEAD~1 

Это не удалит файлы и безопасно ,

Затем, вы можете удалить все файлы, которые добавляются в область размещения по:

git reset 

Теперь, если вы запустите git status, вы можете увидеть, что все файлы unstaged.

После этого вы можете только git add выбрать файлы.

+0

Спасибо за ваш ответ! Если бы вы ответили на 30 минут раньше, я бы пометил как принято – theEpsilon

+0

Рад, что я мог бы помочь. Ничего ... @theEpsilon –

Смежные вопросы