Почему наш Git-Tree выглядит так запутанно - PullRequest
0 голосов
/ 04 июля 2019

На следующем рисунке показана часть нашего текущего Git-Tree.

Что мы на самом деле не понимаем, так это то, как оно все так запутано.

Имейте в виду, что это всеодна ветвь, самый нижний узел - «главный-главный узел», а другие узлы также находятся в главной ветке, но все же они выглядят так, как будто это разные ветви.

Мы используем Visual Studio 2017 иTFS для Git.

Мы полностью смущены этим и должны всегда проверять трижды, чтобы увидеть, является ли это master-веткой или другой.

Мы делаем что-то неправильно илиэто нормально для всех?

Our Git-Tree

Ответы [ 2 ]

2 голосов
/ 04 июля 2019

В удаленном хранилище есть ветвь master. Боб клонирует репозиторий, работает и фиксирует свою локальную ветку master. Ева также клонирует репозиторий, работает и фиксирует свою локальную ветку master. Она довольно быстрая, поэтому она отправляет свои коммиты в удаленный репозиторий; пульт master обновляется с ее коммитами. Когда Боб, наконец, заканчивает то, что он сделал, он не может просто нажать на удаленную ветку master, так как он разошелся: у него есть фиксации на его master, чего нет у удаленного, и в то же время удаленный фиксирует коммит * Боба. 1007 * не имеет (от Евы).

Что теперь? Боб может либо объединить свою основную ветвь с удаленной главной ветвью, сделав свои коммиты доступными, создав коммит слияния, который "объединяет" обе ветви, либо он может перебазировать свою локальную master на пульт master. Последний помещает свои собственные коммиты поверх удаленных коммитов master, как если бы он делал коммит после внесения изменений Евы.

Детали этого процесса зависят от выбранного вами инструмента управления git-сервером, и я не могу ничего сказать о TFS, но именно поэтому необходимо либо слить, либо перебазировать, даже если вы все работаете в основной ветке .

1 голос
/ 05 июля 2019

То, что вы видите, является одной из основных причин, почему я советую не использовать функцию git в Visual Studio и предпочитать внешний инструмент.

По умолчанию VS выполняет git pull (то есть, слияние) синхронизировать вашу локальную ветку с удаленным репозиторием.Что плохо делать, когда вы работаете с той же веткой, с которой вы синхронизируете.

В большинстве случаев вы делаете git pull --rebase для синхронизации (и ведения линейной истории) и сохраненияобъединение только при объединении ветви в другой ветви.

Вы можете установить настройки git ('pull.rebase', если я хорошо помню), чтобы заставить VS делать перебаз при синхронизации.

Я думаю, что в последней версии VS вы также можете сделать ребаз, даже если он не очень удобен для пользователя.

Или вы можете использовать лучший инструмент git (например, Gitextensions: https://github.com/gitextensions/gitextensions), который позволит вам лучше понять, как работает git, что происходит, а также делать более сложные вещи!

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