GIT создать пул-запрос с ветками с разными историями - PullRequest
0 голосов
/ 26 февраля 2020

У меня мастер ветка. в течение некоторого времени он уже имел некоторые коммиты. Тогда я создал развивающую ветку из него. Через некоторое время я хочу слить его обратно с master, но squa sh так, чтобы у него был только один коммит (в настоящее время их много.

Из разработки я создал ветку, например, Develop -fix-branch.

Затем я удалил разработку. Затем я создал пустую разработку с помощью этих команд:

git checkout --orphan develop
git rm -rf .
git commit --allow-empty -m "root commit"
git push origin develop

Это создало пустую ветвь с именем Develop. Все хорошо.

Теперь я планировал создать PR из файлаvelop-fix-branch -> develop и squa sh всех коммитов, в надежде, что у меня будет только один коммит, я получаю это сообщение:

Не с чем сравнивать. Разработка и разработка-исправление-ветвь - это совершенно разные истории коммитов.

Что я могу сделать, чтобы снова разработать только с одним коммитом, а позже и объединить его обратно с мастером, имея также один коммит?

Ответы [ 2 ]

1 голос
/ 26 февраля 2020

Это звучит как довольно сложный способ достижения чего-то другого. И это звучит не совсем правильно, по сути, есть два обычно используемых метода уничтожения вашей истории. Вы можете выполнить интерактивную rebase и использовать squash или fixup (первая из них предложит вам отредактировать сообщения о фиксации результирующей сжатой фиксации).

Давайте предположим, что ваши изменения превышают текущие master (например, вы перебазировали; если нет, вы можете использовать, например, git merge-base --fork-point master, чтобы узнать, на чем ref вы должны основывать свою интерактивную перебазировку):

git rebease -i master

Другой вариант (лично я для несколько причин предпочитают вышеупомянутую), это reset ваш журнал reflog (мягкая перезагрузка) для ref, для которого вы хотите иметь один коммит (например, master из приведенного выше примера).

git reset master
git add .  # or -u or whatever makes sure correct changes are staged
git commit

И вы можете push это.

0 голосов
/ 26 февраля 2020

Я понял, что слишком усложняю.

Я просто удалил файл. git и сделал следующее:

git init
git remote add origin git@github.com:user/repo
git add *
git commit -am 'message'
git push -f origin master

Теперь у меня есть мастер только с одним коммитом.

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