Git: Странное поведение, толкающее локальную ветвь к удаленному мастеру? - PullRequest
0 голосов
/ 24 июня 2018

Я использую Git для контроля версий, у меня есть удаленный репозиторий на Github и локальный мастер на моей машине. Файл, который я меняю, это Toxic Comment Classification.ipynb.

Я делаю некоторые изменения в файле. Запуск git status показывает:

modified:   Toxic Comment Classification.ipynb

Тогда я бегу:

git branch develop

git checkout develop

Теперь запущенный git status говорит мне, что я нахожусь в локальной ветви develop и у меня есть изменения в файле Toxic Comment Classification.ipynb.

Теперь я бегу:

git add -u

git commit -m "checkpoint"

и я вернусь:

[develop ef9250e] checkpoint
1 file changed, 116 insertions(+), 99 deletions(-)

Все кажется хорошим. Теперь я хочу передать эту локальную ветку (develop) в мою удаленную главную ветку:

git push origin master

и я вернусь:

Everything up-to-date

это не то, что я ожидал / хотел. Однако я могу успешно нажать на origin/develop.

1) Что я здесь делаю неправильно? Я ожидаю увидеть изменения, которые я внес в мою ветку develop, отраженную в origin/master ...

Наконец, я пытаюсь обойти все это, проверив мою локальную ветку master и объединившись с моей локальной веткой develop. Затем я запускаю:

git push origin master

и вернитесь:

Total 0 (delta 0), reused 0 (delta 0)
To https://github.com/bclayman/ToxicCommentTextClassification.git
   6de47de..ef9250e  master -> master

2) Этот подход не должен работать? Его вывод заставляет меня думать, что ничего не было обновлено, и поиск на Github не показывает ни одного недавнего обновления ...

Спасибо!

Ответы [ 2 ]

0 голосов
/ 24 июня 2018

Теперь я хочу перенести эту локальную ветку (развернуть) в мою удаленную главную ветку: git push origin master, и я возвращаюсь: Everything up-to-date

git push - это git push <remote> <refspec>.refspec это не просто ветвь, в которую нужно нажать (пункт назначения), это также то, куда нужно нажать (источник).Из git-push документов ...

...

Укажите, какую ссылку назначения обновлять каким исходным объектом.Формат параметра является необязательным плюсом +, за которым следует исходный объект , за которым следует двоеточие:, за которым следует пункт ref .

Важный битis ...

В противном случае отсутствует: означает обновить ту же ссылку, что и .

Так что git push origin master действительно git push master:master,Ничего не изменилось на master, поэтому все обновлено.

Чтобы передать develop удаленному мастеру, его git push develop:master.

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

0 голосов
/ 24 июня 2018

Чтобы нажать develop на master, синтаксис будет выглядеть следующим образом: :

git push origin develop:master 

Статистика push , которую вы видитево второй команде (push to master после объединения) отражается то, что было передано: ничего.
Ничего, потому что вы уже выдвинули его до origin/develop.
Так что ваш второй толчок был простобыстрая перемотка вперед для master: origin/master скорректировала его заголовок к origin/develop.

x   (HEAD, master, origin/master)
 \
  y (develop, origin/develop)

git merge develop

x   (origin/master)
 \
  y (HEAD, master, develop, origin/develop)

git push

x--y (HEAD, master, origin/master, develop, origin/develop)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...