#git #github
Вопрос:
Здравствуйте, итак, я работаю над проектом операционной системы и пытаюсь проверить чужую ветку.
Контекст:
- Я разветвил репозиторий и установил его в качестве источника.
- Исходное репо устанавливается в качестве моего восходящего потока.
- Кто-то сделал черновик pr, в который я хочу внести коррективы (и они также знают об этом).
- Я хочу проверить ветку его проекта pr
- Его черновик pr сделан из его разветвленного репо в основное репо
- Я нахожусь на мастере локально
Что я пробовал:
git checkout -b [otherDevelopersUsername]:[otherDevelopersBranch] upstream/[otherDevelopersUsername]:[otherDevelopersBranch]
но я получаю следующую ошибку: fatal: 'upstream/[otherDevelopersUsername]:[otherDevelopersBranch]' is not a commit and a branch '[otherDevelopersUsername]:[otherDevelopersBranch]' cannot be created from it
Что я делаю не так? Спасибо за помощь.
Редактировать:
git remote -vv
вывод
происхождение https://github.com /[myUsernam]/[repoName] (выборка)
происхождение https://github.com /[Имя моего пользователя]/[Ответное имя] (нажать)
восходящий поток https://github.com /[Организационное имя]/[отвеТное имя] (выборка)
восходящий поток https://github.com /[Организационное имя]/[Ответное имя] (нажать)
Комментарии:
1. Я полагаю, что -b пытается создать новую ветку. Попробуйте выполнить эту команду без «-b».
2. Если проблема не устранена после того, как вы попробовали предложение @Joe’s, пожалуйста, включите выходные
git remote -vv
данные в свой вопрос.3. @tjheslin1 отредактировал @Joe новую ошибку:
error: pathspec '[otherDevsUN]:[otherDevsBranch]' did not match any file(s) known to git
4. Черновик PR еще не находится в целевой ветке GitHub (я думаю); только когда это «настоящий» PR, у него есть ссылка в целевой ветке GitHub, с помощью которой вы можете его получить. Это не имя ветки: это
refs/pull/<number>/head
ссылка. Как говорили другие, если у вас есть доступ к третьему репозиторию, в котором он хранится как имя ветки, вы можете использовать это.5. Если вы пристрастились к сокращенным обозначениям, 🙂 подумайте об использовании
git checkout -t bobsrepo/branchname
wherebobsrepo
is your remote для репозитория Боба, где существует ветка. То есть послеgit remote add bobsrepo <url>
того, как вы запуститеgit fetch bobsrepo; git checkout -t bobsrepo/branch
, и теперь у вас будет локальная ветка с именемbranch
, для восходящего потока которой задано вашеbobsrepo/branch
имя удаленного отслеживания.
Ответ №1:
Если ветка существует в другом разветвленном репозитории, вы можете получить ее следующим образом. Добавьте разветвленный репозиторий в качестве другого удаленного и выполните проверку из него:
git remote add forked https://github.com/something/something.git
git fetch forked
git checkout -b otherDevelopersBranch forked/otherDevelopersBranch
git fetch
извлекает любые обновления и новые коммиты с удаленного устройства.
Команда checkout создаст локальную ветку, которая отслеживает удаленную ветку otherDevelopersBranch
на удаленном forked
Комментарии:
1. Я получаю ту же ошибку, что и та, которую я опубликовал в исходном вопросе.
2. Тогда
otherDevelopersBranch
это не удаленная веткаupstream
. Убедитесь, что ветка есть на удаленном компьютере и что вы правильно написали ее в команде.3. Кроме того, обязательно сделайте
git fetch upstream
следующее. В случае, если в вашем локальном репозитории нет всех обновлений с удаленного.4. Имеет ли значение, что это пиар? Это не ветвь непосредственно на вышестоящем репозитории, это ветвь на черновике pr, который находится в другом разветвленном репозитории
5. Если ветка не включена
upstream
, добавьте разветвленный репозиторий в качестве другого удаленного и выполните проверку из него.git remote add forked https://github.com/something/something.git
а затемgit fetch forked
иgit checkout -b branch forked/branch
Ответ №2:
Если я правильно понимаю вопрос, ответ может быть очевидным.
У вас есть два пульта дистанционного управления:
origin
какой у вас форк репозитория.upstream
какой исходный репозиторий.
А кто-то другой сделал пиар, о котором вы заявляете:
Его черновик pr сделан из его разветвленного репо в основное репо
Слова «его разветвленное репо» подразумевают, что у него есть своя собственная развилка, где находится его ветвь. В этом случае вам нужен третий пульт дистанционного управления, указывающий на его разветвленный репозиторий, чтобы извлечь из него информацию.
Комментарии:
1. Возможно, вы правы, так что, насколько я понимаю ваш ответ, нет никакого способа получить эту ветку pr из исходного репозитория?
2. Если ветка не находится в исходном репозитории, то нет, вы не можете получить ее из исходного репозитория. Однако вы можете получить его из репозитория, в котором есть эта ветвь. Добавьте этот репозиторий с
git remote add
помощью команды.