Хотите, чтобы GIT alias или bash выполняли последовательность команд "git fetch origin aaa: aaa" - PullRequest
0 голосов
/ 20 февраля 2019

У меня есть несколько локальных клонов удаленного репо.Работая в одном из них, я обновляю несколько веток и нажимаю на удаленный.Затем я перехожу к другому клону и хочу получить и обновить мои пульты, кэшированные здесь, в этом другом локальном репозитории.

У меня есть процедура, которая работает нормально, но выполняется вручную.Вот пример.Сначала, работая в первом локальном репозитории клонов, я делаю некоторые изменения в branch1, branch2 и branch3, затем нажимаю.Затем, в другом локальном клоне того же удаленного репо, я хочу обновить его кэшированные копии удаленных репозиториев, поэтому я делаю это ...

   $ git fetch
   ...says remote counting objects, unpacking etc then a series of lines like...
   eb7b3000..67f0ade3  mybranch1      -> origin/mybranch1
   eb7b3000..67f0ade3  mybranch2      -> origin/mybranch2
   eb7b3000..67f0ade3  mybranch3      -> origin/mybranch3
   ...and usually also some [new tag] lines

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

   $ git fetch origin mybranch1:mybranch1
   $ git fetch origin mybranch2:mybranch2
   $ git fetch origin mybranch3:mybranch3

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

Я посмотрел на решения bash и one-liner для похожих, но разных проблем, например, здесь: [ Как получить все ветви Git

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

Я пытаюсь написать сценарий псевдонима или bash (или разоблачить «очевидный» трюк, который я, возможно, пропустил), чтобы решить это.Я просто хочу иметь возможность вводить один псевдоним или другую команду, которая выполняет git fetch, идентифицирует все ветви, которые были обновлены, а затем выполняет последовательность git fetch origin aaa: aaa и т. Д. Для каждой измененной удаленной ветви.Любая помощь приветствуется.

[В настоящее время используется git cmd line версия 2.17.1.windows.2, будем рады обновить, если в этом проблема]

1 Ответ

0 голосов
/ 20 февраля 2019

У меня есть несколько локальных клонов удаленного репо.

Другой подход заключается в том, чтобы иметь только один клон репо.
и оформить нескольковетви в их собственной папке, с git worktree.

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

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

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