Почему git не получает пул реквест, который я объединил в GitHub?

У меня проблемы с git. Моя установка выглядит следующим образом:

[репозиторий рабочей станции] -origin-> [чистый репозиторий сетевого диска] -origin-> [GitHub]

Я только что принял свой первый пул реквест на GitHub (Вот этот) и объединил его с мастером. Теперь я хочу вытащить его на свою рабочую станцию. Итак, я делаю git fetch на сетевом диске, а затем git pull на своей рабочей станции, но на моей рабочей станции git говорит «Уже обновлено» и отказывается объединять изменение (я проверил, его нет в моей рабочей области).

Вывод git branch -vv на сетевом диске включает строку:

* master                    0fe40e2 [origin/master: behind 2] Some small code improvements

Вывод git branch -vv в репозитории рабочей станции включает строку:

* master         0fe40e2 [origin/master] Some small code improvements

Фактическая фиксация, на которую они должны указывать, — 3388641. Похоже, что в голом репозитории на сетевом диске ветка master каким-то образом находится позади origin/master. Я понятия не имею, как возникла эта ситуация и как ее исправить. Я не могу использовать git pull или git reset, так как это просто репо.

Кто-нибудь знает, как я могу определить, в чем проблема и как ее исправить?

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
162
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я не уверен, какова цель этого отдельного голого клона (голый клон — это тот, который, как вы говорите, находится на сетевом диске), но если это не клон зеркало — зеркала — это особый тип голого клона — у него есть свои особенности. собственные имена веток, независимые от всех других репозиториев Git. Поэтому вам нужно будет указать Обновить любую конкретную ветку, если и когда вы хотите, чтобы она подчинялась какому-то другому репозиторию Git.

I can't use git pull or git reset since it is a bare repo ...

Это правда, что вы не можете использовать git pull, потому что это голый репозиторий, а git pull означает запустите git fetch, затем запустите вторую команду Git, а второй команде Git всегда требуется рабочее дерево. Однако это нет случай, когда вы не можете использовать git reset. Чего вы не можете сделать, так это сделать смешанный или полный сброс:

$ git reset
fatal: mixed reset is not allowed in a bare repository
$ git reset --hard
fatal: this operation must be run in a work tree

Однако сброс --soft разрешен:

$ git reset --soft
$ 

поэтому один из способов переместить локальный master в соответствие origin/master:

$ git reset --soft origin/master

Тем не менее, наиболее целесообразным будет либо полностью прекратить использование этого голого репозитория, либо использовать его зеркальный клон (см. сноску 1).


1Технически, даже у зеркального клона есть свои названия веток. Ключевое различие между голым клоном без зеркала и голым зеркальным клоном заключается в том, что у зеркального клона все имена его ветвей подчинены его источнику. В частности, конфигурация fetch для зеркального клона:

[remote "origin"]
    fetch = +refs/heads/*:refs/heads/*

а не стандартный:

[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*

Стандартная настройка выборки означает, что git fetch запуск в таком клоне обновляет все refs/remotes/origin/* имена, чтобы они соответствовали refs/heads/* именам источника. Нестандартная настройка зеркала означает, что git fetch запуск в зеркальном клоне принудительно обновляет все refs/heads/* имена, немедленно забывая (и тем самым теряя любые коммиты, доступные исключительно из) своих собственных имен ветвей в пользу использования вместо этого извлеченных имен. Вот что делает зеркало зеркалом: оно отбрасывает любые коммиты, которые мы являются эксклюзивными для его собственных веток, заменяя хэши коммитов имени своей ветки тем, что он видел на удаленном сервере.

1В приведенном выше описании предполагается стандартное удаленное имя origin. Если вы использовали какое-то другое имя, все останется в силе, просто вместо origin строковым литералом будет любое имя, которое вы использовали.

Интересно. Казалось бы, это могло бы означать, что это никогда бы не сработало, и я просто никогда не замечал, потому что это первый раз, когда я действительно получаю что-то от GitHub. Голое репо существует как локальная резервная копия и централизованное хранилище для работы с кодом из разных мест. Это не зеркальный клон; Я постараюсь превратить его в один. Спасибо!

Pepijn Schmitz 21.04.2019 23:13

Хорошо, git reset --soft сработало! Я нашел страницу, описывающую, как превратить голое репо в зеркальное репо, что я и сделал. Я еще не проверял это, но я верю, что это сработает. Большое спасибо!

Pepijn Schmitz 22.04.2019 16:26

Другие вопросы по теме

Похожие вопросы