Подтвердить что ты не робот

Как удалить последний коммит в локальном репозитории git

Когда я делаю "git pull", у меня конфликт с фиксацией главы. Так что я сделал 'git rebase -abort'

Могу ли я "сохранить" свою фиксацию на "патч", а затем сделать git pull?

Я хочу подражать:

  • Я не совершал, но вместо этого я сделал "git stash"
  • Сделайте git pull, чтобы избежать любой ошибки слияния

Так что мне нужно как-то "повернуть вспять". Возможно ли это с помощью git?

4b9b3361

Ответ 1

Патч 7826b2 по-прежнему вызывает конфликт, когда он применяется после потяжки, но вы можете сделать следующее:

git reset --soft HEAD^
git stash
git pull
git stash pop # Will cause a conflict
git commit    # Re-commit 7826b2

Также возможен другой рабочий процесс:

git reset --hard HEAD^
git pull
git cherry-pick 7826b2 # Will cause a conflict

Второй рабочий процесс основывается на том, что Git хранит фиксацию 7826b2 в рефлоге (вы можете думать о нем как о корзине), даже если вы reset вносили изменения в первую строку.

Ответ 2

Если вы сделали свои изменения в своем локальном репозитории, вы можете сделать прямую переадресацию:

git fetch происхождение

git rebase origin/master

Это отключает локальные коммиты от локального мастера, применяет новые коммиты от источника/мастера, а затем повторяет ваши локальные коммиты.

В вашей ситуации это приведет к конфликту, а git сообщит вам, какие файлы необходимо отредактировать, чтобы разрешить конфликт. После этого git add эти файлы, а затем git commit без аргументов для подтверждения изменений.

Ответ 3

Есть способ, по сути, в git, я уверен, что существует множество способов сделать это...

Вы можете сделать:

git stash     # Stash your changes
git pull      # Pull the changes
git stash pop # Pop your stash

Вы можете сделать:

git pull --rebase # Bring in the changes and apply yours on top of it.

Вы можете сделать:

git stash     # Stash your changes
git checkout <commit> # Pull a specific commit.
git stash pop # Pop your stash

Надеюсь, что это поможет.

Ответ 4

Сначала я предлагаю сделать резервную копию вашего ветки:

git branch your_branch_backup

Тогда самый простой способ:

git reset --soft <commit> #Go back in time but without loosing your changes
git stash                 #Stash your changes
git pull                  #Refresh your branch with origin
git stash pop             #Re-apply your changes on the refreshed branch 

Затем вы можете совершать как обычно