Github показывает неактуальные коммиты в истории запросов по запросу

Я использую "стандартный" поток, хорошо описанный на этом изображении с Github, а именно:

  • Я разветвлял проект SpringFramework.
  • Я клонировал разветвленную SpringFramework на мой компьютер.
  • Когда я хочу добавить новую функцию, я извлекаю из origin,
  • Затем я создаю ветку, фиксирую изменения, нажимаю на мой upstream и создать запрос на извлечение.

Я также хотел бы, чтобы определенные файлы в дереве были изменены в соответствии с моими потребностями (например, правила сборки). Я хочу, чтобы эти изменения присутствовали в upstream Заголовок и распространяется на вновь созданные филиалы.

В результате github показывает историю всех слияний, которые я сделал до того, как создал ветку (см. Pull # 334). При нажатии на вкладку " Измененные файлы " видно, что она сообщает "2 измененных файла с 141 добавлением и 23 удалениями", однако показанная разница содержит максимум 50 изменений. Я делаю вывод, что эти цифры накапливаются и по сравнению с другими коммитами в показанной истории.

Чего я хочу добиться:

  • История изменений в запросе на включение отображает только соответствующие изменения.
  • Статистика говорит правду (например, "2 измененных файла с 23 добавлениями и 18 удалениями").

Что я должен изменить в своем потоке и / или в моем хранилище, чтобы удовлетворить потребности? Заранее спасибо.

1 ответ

Самое простое решение, вероятно, состоит в том, чтобы просто перебазировать ваши изменения вне ветви в источнике, которому вы отправляете запрос на получение (вероятно, в master).

git rebase my-feature-branch --onto origin/master <current branch base>

куда my-feature-branch ветвь, содержащая функцию, для которой вы хотите отправить запрос, и <current branch base> это коммит, непосредственно предшествующий первому коммиту, который вы хотите в запросе на получение

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

Например, чтобы создать новую ветку от origin/master:

git fetch origin # Make sure origin/master is up to date
git checkout origin/master
git checkout -b "new_branch"
# Now do work on this branch.
# Don't make commits here that you don't want in the pull request
Другие вопросы по тегам