Двойные коммиты в сети на GitHub - PullRequest
2 голосов
/ 22 ноября 2011

Что у меня есть:

https://github.com/kayuri/HNC/network

Два хранилища синхронизированы.

The repositories

Как мы можем сделать kayuri репо, содержащее линейную историю коммитов без каких-либо слияний, и nponeccop репо, не содержащее коммитов вообще (поскольку все они уже находятся в восходящем kayuri репо?

Мое локальное репо было создано git clone из nponeccop, и у него есть два пульта: origin (то есть nponeccop), и я добавил kayuri позже.

Я хочу изменить положение nponeccop, чтобы он начинался с последнего коммита kayuri

У меня kayuri и origin указаны как пульты:

$ git remote -v
kayuri  git://github.com/kayuri/HNC.git (fetch)
kayuri  git://github.com/kayuri/HNC.git (push)
origin  git@github.com:nponeccop/HNC.git (fetch)
origin  git@github.com:nponeccop/HNC.git (push)

Теперь, если я сделаю git rebase kayuri, я получу ошибку:

$ git rebase kayuri
fatal: Needed a single revision
invalid upstream kayuri

В локальном репо есть только одна «главная» ветка. Что я делаю не так?

1 Ответ

1 голос
/ 22 ноября 2011

Когда вы рассматриваете историю:

network graph

Если nponeccop содержит коммиты, уже присутствующие на kayuri, то при репо nponeccop простое:

git checkout master
git fetch kayuri 
git rebase kayuri/master
git push -f origin master 

должно быть достаточно для воспроизведения только дельты в верхней части пульта с именем nponeccop (т. Е. Вы добавляете nponeccop в качестве пульта для репо kayuri).
Победа при любой обычной фиксациине будет воспроизведен дважды и будет просто проигнорирован.

Обратите внимание, что это перезапишет историю коммита в вашей собственной ветке master, отсюда и push -f.Если в репо nponeccop работают несколько человек, это может стать проблемой для других пользователей.

...