Мы разрабатываем веб-приложение с моими друзьями. Всякий раз, когда мы фиксируемся в этом репозитории, GitHub всегда дублирует коммиты. Я не хочу, чтобы это произошло, и я даже не знаю, что это правда.
Хочу объяснить, как мы это делаем:
git clone original-repo.git
Когда я проверяю историю коммитов, есть дублированные коммиты, и у одного из них есть проверенный тег. Что мы делаем не так? Вот скриншот для него:
Для информации: раньше мы делали форк исходного репозитория и фиксировали его, но таким образом нам приходится обновлять исходное репо, и я вижу много сообщений об обновлении. Вот почему мы больше так не поступаем.
Редактировать: вот вывод git log --oneline --graph
img
Почему есть 2 «обновления: обновлена социальная панель навигации и добавлена функциональность href» Я зафиксировал только 1 раз и объединил его. Что я делаю неправильно? Есть ли лучший способ внести свой вклад в проект?
Судя по вашему журналу git, более поздний коммит — это коммит слияния, который объединяет ваш запрос на включение в основной.
Вы можете это увидеть, потому что у него есть линии, соединяющие его как с ecec914, так и с 29f6bdf.
Если вы открываете PR только с одной фиксацией, GitHub по умолчанию использует сообщение фиксации в качестве описания PR, а описание PR формирует сообщение фиксации для фиксации слияния при слиянии PR.
Более поздний коммит проверяется, поскольку это коммит, сделанный GitHub, и они подписывают свои коммиты ключом фиксации GitHub.
GitHub будет автоматически использовать GPG для подписи коммитов, которые вы делаете с помощью веб-интерфейса. Коммиты, подписанные GitHub, будут иметь подтвержденный статус.
Если вы проверите содержимое коммитов с помощью git show -v <ref>
, вы должны увидеть, что первый коммит содержит изменения, а второй коммит пуст (поскольку его цель — создать коммит слияния, объединяющий две разошедшиеся истории).
Если вы хотите избежать подобных коммитов слияния в будущем, вам необходимо изменить способ слияния запросов на извлечение.
Один из вариантов — объединиться с основной веткой, используя git merge --ff-only <branch name>
, а затем нажать кнопку. GitHub автоматически закроет PR, если обнаружит, что вы объединили его таким образом. Это произойдет только в том случае, если вы сможете перемотать вперед, не создавая коммит слияния.
Если вы хотите/нужно сделать это из пользовательского интерфейса GitHub, вы можете использовать раскрывающийся список кнопки запроса на слияние и выбрать «Перебазировать и объединить», что приведет к перебазированию ваших коммитов поверх основных, а затем перемотке вперед.
Обратите внимание: если вы подписываете свои коммиты, Rebase и merge могут удалить вашу подпись и заменить ее подписью GitHub.