git fork master всегда впереди источника / мастера, на локальном и удаленном - PullRequest
0 голосов
/ 10 апреля 2020

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

git pull origin master

внесите изменения в код

git commit -m "made change"
git push remote master

, где remote - моя личная вилка , Затем я отправляю запрос на извлечение origin / master из github, который всегда объединяется без проблем.

Используя этот рабочий процесс, каким-то образом мой локальный репозиторий всегда опережает все коммиты, которые я сделал в репо. Даже после того, как мои запросы извлечения объединены в origin / master, и мой форк на github, и мой локальный репозиторий говорят, что это x коммитов перед origin / master (даже если коммиты отображаются в истории коммитов origin source). Еще один неприятный побочный эффект этого заключается в том, что каждый раз, когда я вытаскиваю из источника master, мне приходится делать коммит слияния, потому что мой локальный репозиторий думает, что он впереди.

Кто-нибудь знает, что может происходить? Я всегда использовал этот рабочий процесс, но я никогда не сталкивался с этими проблемами раньше.

1 Ответ

1 голос
/ 10 апреля 2020

Сопровождающие вышестоящего репозитория, вероятно, используют кнопку «rebase and merge» на GitHub. Это копирует ваши коммиты в новые (и предположительно улучшенные, но, возможно, вообще не улучшенные - возможно, просто разные ) коммиты в их хранилище. Скопированные коммиты имеют разные идентификаторы ha sh и, следовательно, разные коммиты.

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

...--o--o--*   <-- their-branch
            \
             1--2--3   <-- your-branch

в вашем хранилище, где пронумерованные коммиты ваши новые. Затем они скопировали этих коммитов, чтобы после их получения у вас было:

...--o--o--*--A--B--C   <-- their-branch
            \
             1--2--3   <-- your-branch

, где A-B-C - их копии ваших 1-2-3. Поскольку * является последним коммитом, который находится на обеих ветвях, они теперь впереди 3, а вы также впереди 3.

Вы можете сказать, что это произошло, получив любые коммиты от их, в реальный, реальный, локальный Git репозиторий (а не какой-то отдаленный GitHub, в котором вы должны отгадывать вещи), и проверку коммитов ha sh ID и коммитов. Если ваши коммиты были скопированы в новые, идентификаторы ha sh не будут совпадать, даже если все остальное в коммитах соответствует .

Если это так, то они ожидают вы, как и они, выбрасываете ваших коммитов в пользу их новых и (предположительно) улучшенных коммитов. Вы можете выбрать, делать это или нет. Если вы решите не делать этого, вы сделаете свою будущую работу более трудной для себя. Если вы решите сделать это, вы сделаете свою текущую работу более трудной для себя (хотя это может быть очень низкий / небольшой уровень сложности). Это ваш выбор, который навязан вам, потому что они использовали «ребаз и слияние».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...