У меня есть проект, размещенный на GitHub, который кто-то подписал. На своей вилке они создали новую ветку "foo" и внесли некоторые изменения. Как мне перенести их "foo" в новую ветку, также называемую "foo" в моем репо?
Я понимаю, что они могли бы отправить мне запрос на извлечение, но я бы хотел сам инициировать этот процесс.
Предположим следующее:
- Поскольку они раздвоили мой проект, оба наших репо имеют одинаковую «историю»
- Хотя GitHub показывает, что их проект был разветвлен от моего, мой локальный репозиторий не имеет никаких ссылок на проект этого человека. Нужно ли добавлять их как удаленный?
- У меня пока нет ветки с именем "foo" - я не знаю, нужно ли мне сначала создавать это вручную.
- Я определенно хочу, чтобы это вытащили в отдельную ветку, а не моего мастера.
источник
git://
URL со страницы репозитория GitHub другого человека вместо//path/to/coworkers/repo.git
. (Описывая это было то , что сделал мой ответ слишком медленно;))Нет, вам не нужно добавлять их в качестве удаленного. Это было бы громоздко и каждый раз было бы больно.
Захватив их коммиты:
Это создает локальную ветвь с именем,
ournameforbranch
которая точно такая же, как иtheirbranch
для них. Для примера вопроса последний аргумент будетfoo:foo
.:ournameforbranch
Часть примечания может быть в дальнейшем удалена, если придумывать имя, которое не конфликтует с одной из ваших собственных ветвей, утомительно. В этом случаеFETCH_HEAD
доступная ссылка доступна. Вы можетеgit log FETCH_HEAD
увидеть их коммиты, а затем сделать что-то вродеcherry-picked
вишни выбрать их коммиты.Оттолкнув их назад:
Часто вы хотите починить что-то их и отодвинуть это назад. Это тоже возможно:
Если работа в отдельном состоянии вас беспокоит, непременно создайте ветку с помощью
:ournameforbranch
и заменитеFETCH_HEAD
иHEAD
выше наournameforbranch
.источник
master
ветка по умолчанию )git branch -m newbranch
в этом отключенном состоянии, git потеряет рассудок и начнет говорить, что ваш репо больше не действителен.git init
похоже, это исправляет и возвращает вас в более или менее прежнее состояние с веткой с именем "newbranch".Если ответ антака:
дает тебе:
Затем (следуя совету Przemek D) использовать
источник
Ниже приведено хорошее целесообразное решение, которое работает с GitHub для проверки ветки PR с ветки другого пользователя. Вам нужно знать идентификатор запроса на удаление (который отображается в GitHub вместе с заголовком PR).
Пример:
Исправление вашего небезопасного кода # 8
Алиса хочет объединить 1 коммит
your_repo:master
сher_repo:branch
Замените ваш пульт, если отличается от
origin
.Замените
8
на правильный ID запроса на получение.источник
GitHub имеет новую опцию относительно предыдущих ответов, просто скопируйте / вставьте командные строки из PR:
Merge
илиSquash and merge
view command line instructions
источник
Если разветвленное репо защищено, и вы не можете прямо в него войти, и ваша цель состоит в том, чтобы внести изменения в их foo, тогда вам нужно вставить их ветку foo в ваш репо следующим образом:
Теперь у вас есть локальная копия foo, без связанного с ней апстрима. Вы можете зафиксировать изменения в нем (или нет), а затем отправить свой файл в свое удаленное хранилище.
Теперь foo находится в вашем репо на GitHub, и ваш местный foo отслеживает его. Если они продолжают вносить изменения в foo, вы можете получить их и влить в свой foo.
источник