git добавить ветку удаленного отслеживания в репо - PullRequest
3 голосов
/ 27 сентября 2011
  1. У меня есть голое репо, которое было клонировано с git.drupal.org.
  2. Я клонировал из этого голого репо на различные веб-сайты.
  3. Из каждого из них я помещаю ветку, специфичную для сайта, в голое репо.

Например, если у меня есть foo.org и bar.org, то в моем голом репо есть drupal'sветки + одна называется foo, а другая - bar.

Идея заключалась в том, чтобы я мог максимально использовать жесткие ссылки git для экономии места на диске с локальными клонами.Я думал, что оставлю голые репо с git.drupal.org и перенесу изменения в мои локальные копии, foo & bar.Затем, когда появилось обновление, это было бы легко.

bare-repo$ git fetch >/dev/null ; git branch -a
* 7.x
  foo
  bar
  remotes/origin/7.x
  remotes/origin/8.x

foo и bar начинались на ветке 7.x, но я бы хотел обновить их до 7.8, например, на git rebase 7.8, но это не удалось:

fatal: Needed a single revision
invalid upstream 7.8

foo и bar не могут «видеть» пульты голого репо.Что я могу сделать?

Ответы [ 2 ]

2 голосов
/ 28 сентября 2011

2 балла, как объяснено в " git rebase fatal: требуется одна ревизия ":

  • вам необходимо указать название ветви, которое в вашем случае будетбыть origin/7.8, а не 7.8:
   git rebase origin/7.8

должно работать.

  • Вы не можете перейти на ветку, которая не содержит фиксации вашего текущеговетка изначально была создана на.(поэтому убедитесь, что это верно для вашего репо)

OP artfulrobot сообщает:

git rebase origin/7.8 
fatal: Needed a single revision invalid upstream origin/7.8

На что я ответил:

, если 7.8 отсутствует в источнике как ветвь, ожидается это сообщение об ошибке.
Возможно 7.8 - это тег в репо 'origin'.
В этом случае вам нужно явно выбрать упомянутые теги сначала:

git fetch --tags origin

Тогда ребаз должен работать

2 голосов
/ 27 сентября 2011

вам нужна рабочая папка для rebase. Таким образом, вам нужно клонировать этот репо, а затем делать то, что вам нужно. После этого верните измененные ветки обратно в репо.

В качестве альтернативы вы можете указать рабочий каталог git --work-tree=../somedir rebase 7.8. К сожалению, параметры worktree и git dir для команды git не полностью реализованы для всех команд. Первый вариант самый лучший.

Rebase нужен рабочий каталог, потому что он должен дать вам контроль, когда он сталкивается с конфликтом. Затем вы можете исправить конфликт и выполнить команду git rebase --continue, чтобы позволить ему применить оставшиеся коммиты на новой базе.

Надеюсь, это поможет.

...