GIT: забыл совершить и внес новые изменения.Как отменить новые изменения, зафиксировать, а затем повторить изменения? - PullRequest
2 голосов
/ 23 декабря 2011

У меня есть файл, который я должен был зафиксировать, но все забыл. Я продолжил вносить больше изменений в файл. То, что я хочу сделать, это вернуться туда, где я должен совершил коммит, сделать коммит в этот момент, но все равно затем вернуть мои новые изменения. Как мне сделать это наиболее экономичным способом?

Спасибо.

РЕДАКТИРОВАТЬ: Просто, чтобы немного объяснить поток.

  • У меня есть файл file.php, который был зафиксирован и находится в рабочем состоянии.
  • Я делаю изменения в файле file.php, который является новой рабочей копией файла file.php. Этот файл не зафиксирован, но должен быть.
  • Я делаю больше изменений в file.php и помню, что я хотел зафиксировать file.php.

Что я хочу сделать сейчас, это сохранить мои последние изменения (так что git stash может пригодиться здесь, спасибо за это!) Вернуться ко второму пункту, зафиксировать, затем продолжить. Есть ли способ добраться до этой средней незафиксированной точки?

ДОПОЛНИТЕЛЬНОЕ РЕДАКТИРОВАНИЕ:

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

Ответы [ 4 ]

3 голосов
/ 23 декабря 2011

Вам не нужно отменять изменения, вы можете просто использовать git add --interactive

2 голосов
/ 23 декабря 2011

Если вы еще не зафиксировали, вы можете использовать git stash для этого:

git stash
git add newfile
git commit --amend # update old commit that should have had the file added
git stash pop # unsaved changes restored and merged

В противном случае вам потребуется зафиксировать файл сейчас, спрятать все другие изменения и использовать git rebase --interactive для перемещениякоммит обратно туда, где он должен быть в истории.

Обратите внимание, что это вызовет проблемы у других, если вас уже подтолкнули - в этом случае вы могли бы просто зафиксировать, где вы сейчас находитесь.

2 голосов
/ 23 декабря 2011

Если под "забыл совершить" вы имеете в виду забыл "нажать", тогда ... есть надежда :)

Если вы зафиксировали свои предыдущие изменения в локальном git-репо, вы можете использовать git stash , чтобы сохранить новые изменения в «тайнике» и отменить их. (вы можете использовать ту же команду для восстановления изменений из тайника. см. ссылку)

1 голос
/ 23 декабря 2011

Если это просто предыдущий коммит, вы всегда можете изменить его.В противном случае самый экономичный способ - просто зафиксировать файл отдельно.В этом нет никакого вреда, если у вас нет особых причин не делать этого.

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