Вот пример того, как это сделать на Bitbucket: Вручную создайте форк Git. Я могу использовать их API командной строки для разветвления проекта на Bitbucket, но мне нужно хотя бы прочитать разрешения корневого проекта.
Вот синтаксис:
curl -v --user {username}:"{password}" \
https://bitbucket.org/api/1.0/repositories/{accountname}/{repo_slug}/fork \
--data "name=mynewrepo"
Чтобы разветвить проект A из учетной записи B в мою учетную запись C с именем Project D, я буду использовать следующую команду:
curl -v --user XYZ: "XYZPASSWORDXYZ" \ https://bitbucket.org/api/1.0/repositories/ABC/ProjectABC/fork \ --data "name=ProjectXYZ"
Теперь я клонирую этот проект на свою локальную машину, git clone [project]
Я перейду в каталог своего проекта и добавлю удаленный апстрим, который будет указывать на исходный репозиторий: git remote add upstream [git]
Теперь, в любое время, чтобы вытащить изменения из исходного репозитория (скажем, из основной ветки), я буду использовать: git pull upstream master и для отправки моих локальных коммитов в мой целевой репозиторий на сервере я буду использовать: git push origin master
И когда ваши изменения в целевом репозитории будут готовы к объединению с исходным репозиторием, создайте запрос на слияние либо с веб-сайта Bitbucket, либо с помощью Bitbucket API: запрос на слияние
Однако, если вы рассчитаете свое время на выполнение этих действий, это может занять от 30 секунд до 2 минут, если у вас медленная система. Я хочу сказать, есть ли способ отправить запрос на слияние, используя только одну команду, которая сделает все это без всего этого?
Если у вас возникли проблемы со скоростью загрузки, вы можете попытаться загрузить только часть истории репозитория, используя неглубокие клоны:
# on cloning :
git clone <url> --depth 1
# on fetching :
git fetch --depth 1 origin <branch>
Обратите внимание, что поверхностные клоны имеют свои собственные ограничения, такие как невозможность просмотреть всю историю (очевидно...) или невозможность слияния или перебазирования в некоторых ситуациях, если у вас недостаточно локальной истории, чтобы найти общего предка две ветви.
Однако вы можете углубить неглубокий клон по запросу, получив более глубокую историю нужных вам ветвей:
git fetch --depth 20 origin master
git fetch --depth 100 origin develop
Если медлительность связана с вызовами API, вам придется более внимательно изучить документацию, чтобы увидеть, можете ли вы удовлетворить свои потребности, используя более дешевые вызовы.
Если у вас возникают проблемы при выполнении локальных команд или при нажатии, я не вижу, как избежать этих операций.
Возможно, вы захотите изучить, как вы можете выполнять свою работу на удаленной машине, которая будет иметь приличную мощность процессора и/или скорость загрузки.
Я решил это, следуя документации, приведенной в GitHub CLI Manual. Создать запрос на слияние с помощью командной строки очень просто: gh pr create