Восстановить репозиторий git для объединения нескольких коммитов в один, но с фиксацией слияния? - PullRequest
0 голосов
/ 18 июня 2020

Это проблема, с которой я столкнулся, вероятно, из-за вредных привычек, но я не смог найти ее решение. По сути, предположим, что я работаю над функциональной веткой какое-то время, и я небрежно выполняю свои коммиты, поэтому у меня их много, и я также пару раз потянул разработку, чтобы не отставать. Это могло бы выглядеть так:

#jfdaa My commit
#fkljd My Commit
#4kfdf Merge Commit
#43252 My Commit
#25525 My Commit

Но я бы хотел, чтобы это выглядело так:

#3953h Merge Commit
#fdsaf My Commit

Есть хороший способ сделать это?

1 Ответ

2 голосов
/ 18 июня 2020

Если все ваши коммиты после слияния, нет необходимости в слиянии.

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

      C - D - M - G - H [feature]
     /       /
A - B - E - F [develop]

git checkout feature
git rebase develop

              C1 - D1 - G1 - H1 [feature]
             /
A - B - E - F [develop]

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

У вас может быть pull, которое является выборкой и слиянием, выполнить перебазирование с помощью git pull --rebase и всегда, устанавливая pull.rebase на merges.

Тогда вы можете squa sh и исправляйте ваши коммиты по своему усмотрению с помощью интерактивной перебазировки.

git rebase -i develop

Следуйте инструкциям во всплывающем редакторе. Подробнее см. История перезаписи в Pro Git.

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