Подтвердить что ты не робот

В чем разница между git push и git pull?

Я просто наткнулся на что-то своеобразное сегодня. Я попросил сотрудника на моей летней работе помочь мне создать новый удаленный репозиторий git для моего кода, и было много путаницы в том, что он сделал и что я хотел сделать. Я попросил его отправить его конфиг, чтобы увидеть путь к его пульту и узнал, что у него нет пульта. Когда я спросил его об этом, он объяснил свой рабочий процесс следующим образом:

  • Измените что-нибудь локально
  • Фиксировать
  • Переместить в удаленный каталог
  • git pull c:\localdir

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

Итак, мой вопрос для вас: в чем разница в нажатии на удаленный и вытягивание с удаленного?

4b9b3361

Ответ 1

Нажатие на пульт: отправьте некоторые коммиты, которые у вас есть на другой репозиторий git. Репо git рассматривается как "remote", но может быть репо в другой папке вашего жесткого диска. вытаскивание с удаленного: получить некоторые коммиты из удаленного репо и объединить их в текущем HEAD (текущая проверка вашего репо)

У вашего коллеги может быть возможность использовать pull вместо push, потому что ваш репозиторий может быть недоступен (без запуска демона git или gitweb или ssh server), но он был доступен с вашего компьютера. Поскольку это сервер, он может не захотеть открыть демон git, который может быть вектором атаки.

Но если ваш репозиторий был доступен/доступен, он просто мог бы сделать:

  • изменить что-то локально
  • совершить
  • нажмите в свой репозиторий

Ответ 2

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

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

Ответ 3

Да, он работает в обратном направлении.

Принципиальный рабочий процесс:

  • изменить что-то локально
  • совершить
  • нажмите на удаленный каталог

Один вариант использования (другой - объясненный Доланором), поскольку не нажатие на удаленный компьютер - это то, что рабочая копия проверена на удаленном компьютере (то есть, она не имеет голого репо), Когда он хочет нажать ветку, которая вывешена на удаленном ящике (например, master:master), это не будет выполнено, так как запрет на нажатие на выпадающие ветки запрещен.

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

Ответ 4

Нет, репозитории являются копиями друг друга, а pull и push - только потоки направлений. Разница с вашим коллегой заключается в том, что он добавил четвертую ненужную команду.