Я был окутан в функцию, и было уже поздно. Я хотел сохранить свою работу в VCS. Я должен был использовать тайник, но я забыл об этом. Я не хотел совершать половину функции, поэтому решил создать новую локальную ветку и сохранить там свою работу. Так я сделал git branch newlocalbranch
и git commit -m 'in the middle of task'
; Но потом я понял, что когда я объединить этот локальный ветвь в свою официальную ветвь с выделенной функциональностью (с идентификатором задачи), в моей ветке свойств все равно появится недопустимое коммит. Теперь я хочу вернуться во времени до того момента, когда я нахожусь в своей ветке функций со всеми этими изменениями, которые я сделал. Затем я их спрятал и пошел домой.Как отменить git-ветку и git commit
ответ
Вы можете просто выполнить мягкий сброс к ветке, от которой вы отделились. Таким образом, вы сбросите указатель ветки на эту ветку, но сохраните все внесенные изменения. Поэтому впоследствии вы можете продолжить работу над ним, а затем создать правильную фиксацию.
Так что, если вы пришли master
раньше, это будет команда:
git reset --soft master
Это было бы для такой ситуации:
master
↓
* --- * --- *
\
\
* [in the middle of task]
↑
newlocalbranch
Альтернатива, которая была бы продолжить работу над веткой до тех пор, пока вы не завершите работу, а затем внесите изменения в «посреди задачи», чтобы она содержала полное изменение и имела собственное имя. Для этого вы бы сделали git commit --amend --edit
. Это в основном заменит, что «в середине задачи» совершит новый, содержащий все изменения от первоначальной фиксации и все, что вы добавили в индекс (обычно команда используется для фиксации последнего коммита, когда вы что-то забыли). Впоследствии вы могли бы сделать обычное ускоренное слияние обратно на мастер и это новое уточненное коммитирование было бы тем, что появилось в истории.
Я собираюсь попробовать первый вариант в понедельник. – dKab
спасибо. 'git reset --soft' работал. Хотя после этого мне пришлось проверить «master» branc h. Я ожидал, что «git reset --soft» сделает это для меня. – dKab
Сброс всегда будет действовать на текущую ветку, перемещая указатель ее ветви на заданный вами коммит. Вместо мастера вы также могли бы указать некоторую фиксацию, которую хотите переместить и в свою ветку. Вот почему команда не изменяет вывешенную ветку на ваш. – poke
После слияния вашего newlocalbranch
в отделении объектов и завершения законченных работ, но до нажатия вы можете squash
/fixup
в одном. См. git guide on this
- 1. Как отменить нефиксированное git commit
- 2. Как отменить удалённую папку в git commit
- 3. Git reset before Commit, как отменить сброс?
- 4. git Branch Without Commit - Отменить изменения
- 5. Как отменить FragmentTransaction commit
- 6. Git: Как отменить/отменить изменение изображения?
- 7. Как отменить git rm
- 8. Как тайно скрыть git commit
- 9. Как вернуть первоначальный git commit?
- 10. Просмотреть/отменить Hg commit?
- 11. Разница между git checkout [commit] и git checkout [commit] file
- 12. В чем разница между git commit и git commit-tree
- 13. Git revert lastet commit
- 14. Понимание, когда использовать git commit -m и git commit -am
- 15. git commit -m vs. git commit -am
- 16. как завершить git commit?
- 17. SVN commit vs Git commit
- 18. Undo git last commit push
- 19. Отменить git commit в Rstudio, который слишком велик, чтобы нажать
- 20. Как отменить разрешение конфликтов Git
- 21. отменить/отменить github commit с netbeans
- 22. Как отменить ветвь слияния git
- 23. Комбинат git add. и git commit
- 24. Как «отменить» отмененную Git-фиксацию?
- 25. Отменить или удалить изменения из предыдущего Git commit
- 26. eclipse git lost fetch и commit
- 27. Как перемещаться между именем commit и unnamed commit в git
- 28. git commit и идентификатор пользователя
- 29. Необходимо отменить фиксацию GIT
- 30. Отменить удаление в GIT
Ваш вопрос непонятен. Но git fast forward merge может помочь вам. http://stackoverflow.com/questions/2850369/why-does-git-fast-forward-merges-by-default –