Могу ли я случайно нажать более одной ветви функций Git одновременно? - PullRequest
0 голосов
/ 08 ноября 2018

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

Запустил новую работу, и мой ведущий разработчик пытается сказать мне, что если я не буду периодически удалять / сокращать свои локальные ветви функций, используя git remote update origin --prune, то git будет автоматически выдвигать их время от времени при нажатии OTHER особенность веток !!!

В качестве примера того, что он говорит здесь, допустим, у меня есть проект под названием myproject, который имеет следующие ветви:

  • master
  • develop
  • feature/one
  • feature/two
  • feature/three

Допустим, feature/one и feature/two старые и уже были перенесены в GitHub, объединены в develop и удалены из GitHub (источник). feature/three - это то, над чем я сейчас работаю.

Он говорит, что если я не буду git remote update origin --prune периодически, то я рискую повторно толкнуть feature/one и feature/two в GitHub, когда я наконец-то протолкну свою ветку feature/three через git push!

Это утверждение, если оно истинно, не только потрясет меня, но и оставит меня ошеломленным! Это правда, ложь или частично правильно и почему?!

Ответы [ 4 ]

0 голосов
/ 10 ноября 2018

Кроме того, что сказали другие, вы можете случайно казнить

git push :

Из руководства пользователя git-push:

Специальный refspec: (или +: для разрешения обновлений без ускоренной пересылки) предписывает Git выдвигать «совпадающие» ветви: для каждой ветви, существующей на локальной стороне, удаленная сторона обновляется, если ветвь той же самой ветви имя уже существует на удаленной стороне.

0 голосов
/ 08 ноября 2018

Это также может быть связано с настройкой push.default в вашем git config (см. Подробный документ здесь ).

Обычно он используется для установки ожидаемого поведения для git push (без аргументов).

Когда вы явно даете аргументы команде push, она действует так, как ей было сказано, но часто бывает, что люди забывают, какова их настройка по умолчанию (или просто игнорируют ее существование), пытаются нажать, и если их значение по умолчанию - подтолкнуть каждую ветвь к своему удаленному коллеге *, ну ... это может быть именно тем, на что намекал ваш коллега с этим «автоматическим нажатием».

* Стандарт изменился с git 2.0 с matching (протолкнуть каждую ветвь к своему аналогу) до simple (просто протолкнуть текущую ветвь).

0 голосов
/ 08 ноября 2018

Начиная с Git 2.0, по умолчанию push.default config установлен на simple. Только текущая ветвь выдвигается, если она связана с удаленной ветвью отслеживания, и имена совпадают: https://git -scm.com / docs / git-config .

Раньше в Git 1.x. по умолчанию было matching. При такой конфигурации все локальные ветви с одинаковой именованной ветвью отслеживания были объединены. Если у вас были устаревшие удаленные ветви отслеживания, может случиться, что git push заново создаст удаленную удаленную ветку.

Возможно, ваш ведущий разработчик все еще на Git 1.x. или ваша команда решила использовать старое поведение matching по умолчанию.

0 голосов
/ 08 ноября 2018

git не будет автоматически выдвигать ветви. Но вы, конечно, можете случайно нажать неправильную ветвь, когда вы делаете нажатие feature/three. Например, вы можете случайно набрать git push origin feature/one вместо git push origin feature/three. Это не имеет ничего общего с git, но это будет ошибка пользователя. Вы также можете случайно использовать флаг --all, когда вы не собирались, например.

Кроме того, если вы случайно нажали не тот branch, просто удалите remote branch, когда поймете свою ошибку (git push origin :feature/one). Поскольку remote branch уже был merged, это ни на что не повлияло бы отрицательно.

...