Как мне повторно выдвинуть предыдущий коммит? - PullRequest
0 голосов
/ 13 февраля 2019

В настоящее время я нахожусь в ситуации, когда некоторые из моих новых коммитов перезаписывают содержимое старого коммита.

Я использую расширение git для инструмента, из интерфейса GUI я могу получить определенную ревизию - коммит.

Итак, я проверил вышедшую ревизию и могу локально увидеть, что файлы существуют - но, похоже, что-нибудь зафиксировать?Что, я думаю, имеет смысл?

Как мне повторно выдвинуть предыдущий коммит?

Ответы [ 4 ]

0 голосов
/ 14 февраля 2019

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

Я выполнил команду git push -f, так как хотел перебазировать с нашим мастером, но локальное имя ветви не совпадало с именем удаленного, что означало, что удаленная ветвь была создана, и она содержала новуюсовершить.

Похоже, что gitExtension по умолчанию создает локальную ветвь с заглавной стартовой буквой - что не всегда имеет место при создании удаленной ветки.

0 голосов
/ 13 февраля 2019

Скажем, у нас есть сценарий, в котором наш предыдущий журнал коммитов выглядит как

git status
commit-1 [ bad commit ]
commit-2 [ bad commit ]
commit-3 [ bad commit ]
commit-4 [ good commit ]
commit-5 [ good commit ]

Теперь мы можем захотеть две вещи.

first Case

Мы можем захотеть удалитьвсе наши плохие коммиты и мы хотим перейти к последней стадии коммитов.Скажем так:

git status
commit-4 [ good commit ]
commit-5 [ good commit ]

Мы можем сделать это, оставив первые три коммита, как это

git reset --hard HEAD~3 
# for n number of last commit reset 
git reset --hard HEAD~n

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

Второй случай

Возможно, вы захотите поставить свой коммит-4 на вершину этих

git status
commit-4 [ good commit ]
commit-1 [ bad commit ]
commit-2 [ bad commit ]
commit-3 [ bad commit ]
commit-4 [ good commit ]
commit-5 [ good commit ]

Вы можете сделать это следующим образом:

git cherry-pick -n <commit-4 sha1>

Они сделают commit-4 лучшим из тех плохих коммитов.

0 голосов
/ 13 февраля 2019

Я предлагаю один из двух способов.

Вернуть

Если ваш новый коммит не принес ничего полезного.И он просто не сделал то, что вы делали в своем предыдущем коммите, используя git-revert.Он создаст новый коммит, который не выполняет того, что сделал обратный коммит.

В командной строке git вы идентифицируете плохой коммит с помощью git log с его идентификатором (пример 12345abcd).Затем верните этот коммит git revert 12345abcd

Cherry-Pick

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

Сначала определите коммит, который вы хотите применить, снова запишите git log (например, fedc9876) git cherry-pick fedc9876

Если вам нравится больше контроля наддля выбора вишни используйте флаг -n, чтобы предотвратить немедленный коммит git cherry-pick -n fedc9876

Вы упоминали, что используете инструмент git.Команды git могут помочь вам найти, как использовать это для этой цели.

0 голосов
/ 13 февраля 2019

Вы пытались выбрать коммит сверху?мерзавец вишня

...