Поведение по умолчанию & ldquo; git push & rdquo; без указания ветки

Я видел это чаще всего, когда корпоративный брандмауэр на рабочей станции / ноутбуке мешает, он убивает соединение.

, например. У меня есть серверный процесс и клиентский процесс на одной машине. Сервер прослушивает все интерфейсы (0.0.0.0), и клиент пытается подключиться к общедоступному / домашнему интерфейсу (обратите внимание, что это не интерфейс loopback 127.0.0.1).

Если на компьютере отключена сеть (например, Wi-Fi выключен), тогда соединение формируется. Если устройство подключено к корпоративной сети (напрямую или vpn), тогда соединение формируется.

Однако, если аппарат подключен к общедоступному Wi-Fi (или к домашней сети), тогда брандмауэр ударяет по убивающим связь. В этой ситуации подключение клиента к интерфейсу loopback работает нормально, а не в домашнем / общедоступном интерфейсе.

Надеюсь, что это поможет.

1308
задан Nick Volynkin 24 June 2015 в 04:40
поделиться

4 ответа

Вы можете управлять поведением по умолчанию, установка push.default в конфигурации git. Из документации git-config (1) :

push.default

Определяет действие, которое git push должен предпринять, если в командной строке не задано refspec, на удаленном компьютере не настроено refspec, и никакие refspec не подразумеваются ни одной из опций, указанных в командной строке. Возможные значения:

  • ничего : ничего не вставлять

  • сопоставление : вставлять все соответствующие ветви

    Все ветки с одинаковыми именами на обоих концах считаются совпадающими.

    Это используется по умолчанию, но не начиная с Git 2.0 ( simple - новое значение по умолчанию).

  • upstream : переместить текущую ветвь в ее восходящую ветвь ( отслеживание является устаревший синоним для восходящего потока)

  • текущий : переместить текущую ветвь в ветвь с тем же именем

  • простой : (новый в Git 1.7.11) как восходящий поток, но отказывается отправлять, если ветвь вверх по течению ' s имя отличается от локального

    Это самый безопасный вариант и хорошо подходит для начинающих.

    Этот режим стал по умолчанию в Git 2.0.

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

Примеры командной строки:

Для просмотра текущей конфигурации:

git config --global push.default

Чтобы установить новую конфигурацию:

git config --global push.default current
1566
ответ дан 19 December 2019 в 20:14
поделиться

git push origin отправит все изменения в локальные ветки, которые имеют соответствующие удаленные ветки в origin Что касается git push

Работает как git push , где - это удаленный узел текущей ветки (или источник, если для текущей ветки не настроен пульт).

Из раздела «Примеры» git-push справочной страницы

198
ответ дан 19 December 2019 в 20:14
поделиться

Git push попытается отправить все локальные ветки на удаленный сервер, вероятно, это то, что вам не нужно. У меня есть несколько удобных настроек, чтобы справиться с этим:

Соответствующие псевдонимы «gpull» и «gpush»:

В моем ~ / .bash_profile

get_git_branch() {
  echo `git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'`
}
alias gpull='git pull origin `get_git_branch`'
alias gpush='git push origin `get_git_branch`'

Таким образом, выполнение «gpush» или «gpull» просто подтолкнет моя ветка "сейчас на".

8
ответ дан 19 December 2019 в 20:14
поделиться

Я просто поместил это в свой раздел псевдонимов .gitconfig, и мне нравится, как это работает:

pub = "!f() { git push -u ${1:-origin} `git symbolic-ref HEAD`; }; f"

Переместит текущую ветку в исходную точку с помощью git pub или другое репо с git pub repo-name . Вкусные.

18
ответ дан 19 December 2019 в 20:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: