Я использую следующую команду для отправки в мою удаленную ветку:
git push origin sandbox
Если я говорю
git push origin
это тоже подталкивает изменения в других моих ветках или только обновляет мою текущую ветку? У меня есть три ветви: master
, production
и sandbox
.
В git push
документации не очень ясно об этом, поэтому я хотел бы уточнить это навсегда.
Какие ветви и пульты git push
точно обновляют следующие команды?
git push
git push origin
origin
выше это пульт.
Я понимаю, что git push [remote] [branch]
будет толкать только эту ветку к удаленному.
git
branch
git-branch
git-push
PlagueHammer
источник
источник
git push
, которое может представлять интересОтветы:
Вы можете управлять поведением по умолчанию, установив push.default в вашем git config. Из документации git-config (1) :
Определяет действие, которое должен выполнить git push, если в командной строке не задан refspec, в удаленном не настроен refspec и ни один из параметров, заданных в командной строке, не подразумевает refspec. Возможные значения:
nothing
: ничего не толкайmatching
: нажать на все соответствующие ветвиВсе ветви, имеющие одинаковое имя на обоих концах, считаются совпадающими.
Раньше это было по умолчанию, но не с Git 2.0 (
simple
это новое значение по умолчанию).upstream
: выдвинуть текущую ветвь в ее восходящую ветвь (tracking
является устаревшим синонимом для восходящей ветки )current
: нажать текущую ветку на ветку с тем же именемsimple
: (новое в Git 1.7.11), как в апстриме, но отказывается выдвигать, если имя ветки в апстриме отличается от локального.Это самый безопасный вариант и хорошо подходит для начинающих.
Этот режим стал режимом по умолчанию в Git 2.0.
Примеры командной строки:
Для просмотра текущей конфигурации:
Чтобы установить новую конфигурацию:
источник
simple
режим. Этот режим предназначен для использования по умолчанию в будущем.simple
работает какupstream
, но вродеcurrent
требует, чтобы имена ветвей были одинаковыми на обоих концах.simple
поведение теперь является стандартным.Вы можете настроить поведение по умолчанию для вашего git с push.default
или если у вас много репозиториев и вы хотите то же самое для всех, то
Тока в этой установке означает , что по умолчанию будет только нажать текущую ветвь , когда вы делаете Git толчок
Другие варианты:
ОБНОВЛЕНИЕ - НОВЫЙ СПОСОБ СДЕЛАТЬ ЭТО
Начиная с Git 1.7.11, сделайте следующее:
Это новая введенная настройка, которая работает так же, как и текущая, и по умолчанию будет установлена версия git из v 2.0.
источник
git push origin
подтолкнет все изменения в локальных ветвях, которые имеют соответствующие удаленные ветки вorigin
As дляgit push
Из раздела «Примеры»
git-push
справочной страницыисточник
Я просто зафиксировал свой код в ветке и отправил его в github, вот так:
источник
Вот очень полезная и полезная информация о Git Push : Git Push: только подсказка
Наиболее распространенное использование git push - это отправка локальных изменений в ваш общедоступный репозиторий. Предполагая, что восходящий поток является удаленным с именем «origin» (удаленное имя по умолчанию, если ваш репозиторий является клоном), а ветвь, которую нужно обновить в / из, называется «master» (имя ветви по умолчанию), это делается с помощью:
git push origin master
git push origin
перенесет изменения из всех локальных веток в соответствующие ветки удаленного источника.git push origin master
перенесет изменения из локальной ветки master в удаленную ветку master.git push origin master:staging
перенесет изменения из локальной ветки master в удаленную промежуточную ветку, если она существует.источник
git push origin branch_name
почему-то пихают не толькоbranch_name
ветку, но и другие мои локальные ветки (git version 1.9.1).git push origin master:staging
это удивительный скрытый драгоценный камень!(Март 2012)
Остерегайтесь: эта
matching
политика " " по умолчанию может скоро измениться(иногда после git1.7.10 +) :
Смотрите " Пожалуйста, обсудите: что должен делать" git push ", когда вы не говорите, что нужно нажимать? "
http://thread.gmane.org/gmane.comp.version-control.git/192547/focus=192694
источник
Я просто помещаю это в мой раздел псевдонимов .gitconfig и люблю, как это работает:
Будет подталкивать текущую ветку к источнику с
git pub
или другим репо сgit pub repo-name
. Вкусный.источник
git push -u --repo="origin" $1;
вместо этого. Это работает довольно хорошо, за исключением того, что если вы отправляете в другой репозиторий, именем ветви будет имя, используемое другим репозиторием, а не то, из которого вы отправляетеВы можете нажать текущую ветку с помощью команды
(взял отсюда )
источник
Git push попытается отправить все локальные ветви на удаленный сервер, это, скорее всего, то, что вам не нужно. У меня есть пара удобных настроек, чтобы справиться с этим:
Псевдонимы "gpull" и "gpush" соответственно:
В моем ~ / .bash_profile
Таким образом, выполнение «gpush» или «gpull» подтолкнет только мою «текущую» ветку.
источник
Вы можете изменить это поведение по умолчанию в вашем
.gitconfig
, например:Чтобы проверить текущие настройки, запустите:
источник
Вместо того, чтобы использовать псевдонимы, я предпочитаю создавать сценарии git-XXX, чтобы я мог легче контролировать их источники (у всех наших разработчиков есть определенный dir, управляемый источником на своем пути для такого типа вещей).
Этот скрипт (вызывается
git-setpush
) установит значение конфигурации дляremote.origin.push
значения на что-то, что будет только выдвигать текущую ветку:обратите внимание, что, как мы используем
Gerrit
, он устанавливает цель,refs/for/XXX
чтобы нажать в ветке обзора. Это также предполагает, что origin - ваше удаленное имя.Вызвать его после проверки ветки с
Очевидно, его можно адаптировать и для оформления заказа, но мне нравятся сценарии, которые делают одно и делают это хорошо.
источник
feature/fix_fubar
указывают на более общие ветки восходящего потока, такие какmaster
илиdevelop
, так что это будет указывать на неправильный восходящий поток. Как выглядит ваш локальный поток для репозиториев с герритным контролем?git config remote.origin.push HEAD:refs/for/master
.Я добавил следующие функции в мой файл .bashrc для автоматизации этих задач. Это делает git push / git pull + имя текущей ветви.
источник