Git: Почему в моих новых ветках появляются файлы из другой ветки? - PullRequest
0 голосов
/ 28 мая 2020

Я работал над веткой, отправил ее на Github и создал запрос на вытягивание. Я заметил, что там была куча файлов из другой ветки.

Итак, я закрыл PR, проверил свою главную ветку, обновил ее из мастера и создал новую ветку. Перед тем, как прикоснуться к каким-либо файлам, я запустил git status, который, как и ожидалось, не дал никаких изменений. Затем я в качестве эксперимента подтолкнул эту пустую ветку к мастеру на Github и создал новый PR. К PR были прикреплены те же дополнительные файлы.

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

Шаги, которые я предпринял:

git checkout master
git pull origin master
git checkout -b new-branch
git status //nothing here
git push origin new-branch

//open Github, create PR from new branch, see that it has a bunch of files in it already

1 Ответ

0 голосов
/ 28 мая 2020

Возможно, ваш master на опережает origin/master.

То есть сразу после:

git checkout master
git pull origin master

, если вы запустить:

git log --decorate --oneline --graph --boundary origin/master...master

что вы получите на выходе? (Обратите внимание на три точки здесь, хотя две будут означать аналогичную информацию.) Если что-то появляется здесь, можно ожидать результатов, которые вы получили. Вы также можете запустить:

git rev-list --count origin/master..master

(на этот раз обратите внимание на две точки); если результат не равен нулю, все это имеет смысл.

git checkout -b new-branch

Это создает новое имя new-branch, указывающее на то же commit , что и ваш ( обычное, местное) название филиала master. Вероятно, вы хотели, чтобы он указывал на тот же commit , что и ваш origin/master. Если origin/master выбирает другую (более старую) фиксацию, чем master, вы выбрали здесь неправильную фиксацию.

git status //nothing here

Поскольку вы только что создали new-branch, ничего действительно интересно сообщить здесь.

git push origin new-branch

Здесь ваш Git вызывает Git на origin (на GitHub) и просит их создать их имя branch, так что он выбирает тот же коммит, что и ваше имя branch. Если эта фиксация опережает их master - ваш origin/master - и вы делаете запрос на вытягивание сейчас, этот запрос на вытягивание будет содержать коммиты, которые есть у вашего master и которых нет в master.

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