Как проверить удаленную разветвленную ветку?

#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 where bobsrepo 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:

Если я правильно понимаю вопрос, ответ может быть очевидным.

У вас есть два пульта дистанционного управления:

  1. origin какой у вас форк репозитория.
  2. upstream какой исходный репозиторий.

А кто-то другой сделал пиар, о котором вы заявляете:

Его черновик pr сделан из его разветвленного репо в основное репо

Слова «его разветвленное репо» подразумевают, что у него есть своя собственная развилка, где находится его ветвь. В этом случае вам нужен третий пульт дистанционного управления, указывающий на его разветвленный репозиторий, чтобы извлечь из него информацию.

Комментарии:

1. Возможно, вы правы, так что, насколько я понимаю ваш ответ, нет никакого способа получить эту ветку pr из исходного репозитория?

2. Если ветка не находится в исходном репозитории, то нет, вы не можете получить ее из исходного репозитория. Однако вы можете получить его из репозитория, в котором есть эта ветвь. Добавьте этот репозиторий с git remote add помощью команды.