«git rebase origin» против «git rebase origin / master» - PullRequest
52 голосов
/ 11 мая 2011

Я не вижу разницы между git rebase origin и git rebase origin/master. В моем случае я дважды клонировал репозиторий git. В первом клоне я должен использовать git rebase origin, а в другом клоне я должен использовать git rebase origin/master.

Пример: http://paste.dennis -boldt.de / 2011/05/11 / git-rebase

Ответы [ 3 ]

65 голосов
/ 11 мая 2011

git rebase origin означает «перебазирование из ветви отслеживания origin», а git rebase origin/master означает «перебазирование из ветви master из origin»

.~/Desktop/test, что означает, что git rebase origin знает, какую ветвь origin перебазировать.Если ветки трекинга не существует (в случае ~/Desktop/fallstudie), git не знает, какую ветвь origin она должна пройти, и терпит неудачу.

Чтобы это исправить, вы можете сделать трек ветки origin/master с:

git branch --set-upstream-to=origin/master 

Или, если master не является проверенной веткой:

git branch --set-upstream-to=origin/master master
20 голосов
/ 13 мая 2011

Вот лучший вариант:

git remote set-head -a origin

Из документации:

С помощью -a пульт дистанционного управления запрашивает его HEAD, а затем $ GIT_DIR / remotes //HEAD настроен на ту же ветку.например, если на удаленном HEAD указано следующее, «git remote set-head origin -a» установит для $ GIT_DIR / refs / remotes / origin / HEAD значение refs / remotes / origin / next.Это будет работать только если refs / remotes / origin / next уже существует;в противном случае он должен быть извлечен первым.

На самом деле это было довольно давно (начиная с v1.6.3);не уверен, как я это пропустил!

2 голосов
/ 11 мая 2011

Вы можете создать новый файл в [.git \ refs \ remotes \ origin] с именем "HEAD" и поместить в него содержимое "ref: refs / remotes / origin / master".Это должно решить вашу проблему.

Кажется, что клон из пустых репо приведет к этому.Возможно, у пустых репозиториев нет HEAD, потому что не существует ни одного коммита.

Вы можете использовать

git log --remotes --branches --oneline --decorate

чтобы увидеть разницу между каждым репозиторием, в то время как у "проблемного" нет "origin / HEAD"

Редактировать: указать способ с помощью командной строки
Вы также можете использовать gitв командной строке для этого они имеют одинаковый результат

git symbolic-ref refs / remotes / origin / HEAD refs / remotes / origin / master

...