47 lines
4.1 KiB
Markdown
47 lines
4.1 KiB
Markdown
---
|
||
title: When to Undoredo
|
||
localeTitle: Когда до Undoredo
|
||
---
|
||
Обычно вы хотите использовать UNDO / REDO, когда вы совершаете некоторые изменения в git, и понимаете, что изменения необходимо удалить / вернуть. Это очень распространено в сценариях, например, когда вы делали временные изменения в некоторых файлах и забывали их вернуть, а затем приступили к их добавлению к ошибке.
|
||
|
||
## Рабочий процесс UNDO / REDO:
|
||
|
||
Предполагая, что вы внесли некоторые изменения и совершили такие действия, как:
|
||
```
|
||
git commit -m "Commit 1 - Some changes to the code"
|
||
git commit -m "Commit 2 - Some MORE changes to the code"
|
||
```
|
||
|
||
1. (UNDO-ing): вернуть обратно последнюю команду `git reset --soft HEAD~`
|
||
2. _Сделайте изменения._
|
||
3. Добавьте свои файлы в промежуточную область `git add <filenames or paths>` или `git add --all`
|
||
4. (REDO-ing): выполнить фиксацию. `git commit -c ORIG_HEAD` или `git commit -C ORIG_HEAD`
|
||
|
||
## Как это работает?
|
||
|
||
Теперь, когда вы знаете, что поток позволяет понять, как это работает за кулисами.
|
||
|
||
1. `Step 1` сбрасывает последнюю фиксацию, т.е. `"Commit 2 - Some MORE..."` обратно в фиксацию `"Commit 1 - Some..."` .
|
||
2. На `Step 2` вы делаете изменения, которые вы сочтете подходящими для файлов.
|
||
3. На `Step 3` вы добавляете измененные файлы в промежуточную область либо выборочно с `git add <filenames>` либо все файлы с `git add --all` .
|
||
4. На последнем этапе вы совершаете изменения в промежуточной области.
|
||
|
||
Примечание: вы можете использовать `-c` или `-C` . Маленький `-c` откроет редактор для модификации сообщения фиксации, в этом случае это будет `Commit 2 - Some MORE...` Вы можете редактировать сообщение фиксации так, как хотите.
|
||
|
||
Или, альтернативно, вы можете использовать caps `-C` , где git пропускает окно редактора и повторно использует сообщение _LAST_ commit, которое в этом случае является `Commit 2 - Some MORE...`
|
||
|
||
Повторное использование сообщения «То же» фиксации также известно как повторное / повторное выполнение.
|
||
|
||
## Неэксплуатация перед фиксацией
|
||
|
||
Чтобы отменить изменение, поставленное перед фиксацией, просто запустите `git reset <file>` или `git reset` чтобы отключить все изменения до фиксации.
|
||
|
||
Примечание. В более старых версиях git команды были `git reset HEAD <file>` и `git reset HEAD` соответственно. Это было изменено в Git 1.8.2
|
||
|
||
## Некоторые дополнительные трюки:
|
||
|
||
Вы можете возвратить любое количество `git reset --soft HEAD~n` используя `git reset --soft HEAD~n` где вы хотите отменить последние `n` коммитов.
|
||
|
||
## Attribution:
|
||
|
||
Эта статья основана на вопросе переполнения стека [здесь](http://stackoverflow.com/questions/927358/how-do-you-undo-the-last-commit/927386#927386) и [здесь](http://stackoverflow.com/questions/348170/undo-git-add-before-commit/348234#348234) . |