Запрос 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 перед использованием.