Как заметил Брайан Уайт, проблема с git merge --squash
заключается в том, что он не дает вам видимой связи и, следовательно, не отслеживает обратную ветвь (или отдельные изменения), с которой вы слились.
Видимо (если смотреть в виде графика git log --graph
), важная ветвь, которая была объединена обратно, не отличается от экспериментальной ветки, с которой вы облажались и с радостью отбросили бы. Оба просто висят там, не связанные ни с чем. Лично я хочу знать, что определенная ветвь была объединена, поэтому я знаю, что работа выполнена.
Решение, которое работает для меня, заключается в использовании слияния с опцией no-fastforward.
git merge --no-ff somebranch -m "my commit message"
Это вынуждает git создавать единый коммит со всеми включенными изменениями веток, вы можете установить сообщение коммита самостоятельно (если хотите), НО самое важное, оно связывает новый коммит с веткой, в которую он только что слился. Это заметно показывает, что работа над этой веткой завершена, но также позволяет проследить, чтобы увидеть детали отдельных коммитов из объединенной ветки.
Вот пример, где очень простые ветви с одним и двумя коммитами соответственно были объединены в master. Впоследствии я удалил теги ветвлений на слитых ветвях, однако имя ветки все еще можно увидеть в сообщении фиксации слияния. Имя ветви должно обобщать изменения, и если вы хотите узнать точные содержащиеся в них изменения, вы можете проследить его до отдельных коммитов. Этот подход, кажется, хорошо работает для простых проектов.
Примечание. Мне пришлось вручную нарисовать один из разъемов, так как он был таким синим, что его было едва видно.