Запрос Pull в GitHub не показывает конфликт слиянием, был исправлен и не отображает мои коммиты

Я исправляю конфликты слияния для других участников в командной строке. Все еще учись, как работает Git, так что несите меня...

Так же...

git checkout -b otherusersbranch master
git pull https://github.com/otheruser/myrepo.git otherusersbranch

.... найти и исправить конфликты

git add .
git commit -m "fixing merge conflicts"
git push origin otherusersbranch
git checkout master
git merge --no-ff otherusersbranch
git push origin master

Когда конфликт слияния появляется исправленным из командной строки, я нажимаю это изменение на ветвь вкладчика, как обычно. Однако индикатор конфликта слияния в запросе на вытягивание остался неизменным, и я не могу видеть свои фиксации в запросе на вытягивание. Что я делаю неправильно?

Ответы

Ответ 1

Я не думаю, что вы успешно нажимаете изменения в ветке пользователя. Попробуйте отправить запрос на перенос в эту ветку. В противном случае вам нужно дать разрешение на прямое нажатие.

Из того, что вы описали, вы только нажимаете изменения на свою ветку, поэтому она не появляется в истории фиксации.

Ответ 2

Предполагая, что вы находитесь на другой ветке, вы можете просто потянуть изменения своих друзей, сделав

git pull https://github.com/otheruser/myrepo.git otherusersbranch

Затем разрешите конфликты слияния, добавьте фиксацию и нажмите на свой пульт. Вы не можете вносить изменения в свою ветку знакомого, если только он не предоставил вам правильный доступ.

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

Ответ 3

Если вы можете напрямую нажать на ветвь своего вкладчика (что я получаю из предположения, что https://github.com/otheruser/myrepo.git является вашей вилкой, а origin является вашим вкладчиком), тогда причина, по которой изменения не отображаются в запросе на вытягивание из ваша вилка к происхождению - это то, что вы нажимаете изменения непосредственно, тем самым обходя процесс запроса на тяну.

Объяснение: Когда вы открываете запрос на растяжение от вилки против своей вилки друга, и они сливают его, что эквивалентно их выполнению

git fetch <your-fork> master 
git merge <your-fork>/master 

или

git pull <your-fork> master 

за которым следует

git push <their-fork> master

Если вы просто продвигаетесь вперед и нажимаете на <their-fork>, который в этом случае является источником, то вы по существу уже сделали то, что сделал бы запрос на растяжение. Кроме того, когда вы исправляете конфликты слияния, когда вы переместились в <their-fork> вместо <your-fork>, github видит точно те же конфликты слияния, что и раньше, в запросе на перенос, поскольку <your-fork> не обновлен, поэтому теперь у вас есть конфликты слияния с "фиксированная" версия. Когда процесс PR обойден, git не имеет понятия, но git HUB очень запутан (запросы на загрузку полностью на основе github - нет концепции in "запроса на pull" в самом git).

Самый простой способ исправить это - просто закрыть открытый PR, так как вы все равно объединили его. Однако, если вы хотите сохранить рабочий процесс запроса на тягу, вы можете захватить ветку хозяина друга, выполните

git reset --hard 

до того, как вы нажмете на него, а затем

git checkout -b tmp 
git cherry-pick otheruserbranch <list-of-commits-you-made>
git checkout master
git merge tmp
git push <your-fork> master

который вернет ваш PR, чтобы он выглядел так, как вы этого хотите (возможно, вам придется внести некоторые коррективы, я не очень четко понимаю вашу структуру ветвей, но это суть)

ПРИМЕЧАНИЕ: Посмотрите здесь для документации по git reset, и убедитесь, что вы понимаете последствия жесткого reset перед использованием.