Как мне настроить git на автоматическую отправку в удаленное репо (включая автоматическое предоставление моей парольной фразы) после каждой фиксации в локальном репо?
86
Как мне настроить git на автоматическую отправку в удаленное репо (включая автоматическое предоставление моей парольной фразы) после каждой фиксации в локальном репо?
Ответы:
Во-первых, убедитесь, что вы можете нажать вручную, не вводя пароль. Если вы используете HTTP или HTTPS, это будет случай либо создания
.netrc
файла с данными для входа в систему, либо добавления вашего имени пользователя и пароля в URL-адрес для удаленного . Если вы используете SSH, вы можете создать пару ключей, в которой закрытый ключ не имеет пароля, или использоватьssh-agent
для кеширования своего закрытого ключа .Затем вы должны создать исполняемый (
chmod +x
) файл.git/hooks/post-commit
, содержащий следующее:... настраивая эту строку, если вы хотите отправить на удаленный компьютер, отличный от
origin
, или отправить ветку, отличную отmaster
. Убедитесь, что вы сделали этот файл исполняемым.источник
.git/config
префиксомfeature/xy/
.Если вы начнете использовать больше, чем основную ветку, вы можете автоматически нажать текущую ветвь. Мой hook (
.git/hooks/post-commit
) выглядит так:Он подталкивает текущую ветку, если он может определить имя ветки с помощью git symbolic-ref.
" Как получить текущее название ветки в Git? » Касается этого и других способов получения текущего имени ветки.
Автоматический толчок для каждой ветки может мешать при работе в ветвях задач, где вы ожидаете, что произойдет некоторая колбаса (вы не сможете легко переустановить после нажатия). Таким образом, ловушка не будет подталкивать ветки, заканчивающиеся определенным суффиксом (в примере "_local").
источник
#!/bin/sh
чтобы она работала. В противном случае он твердил:error: cannot run .git/hooks/post-commit: No such file or directory
. Спасибо, мне больше всего нравится ваше решение.Создайте файл с именем «post-commit» в каталоге .git / hooks с содержимым «git push», хотя, если вы хотите автоматически предоставить пароль, потребуется модификация.
источник
Этот сценарий git-autopush позволяет вам установить ловушку после фиксации, аналогично тому, что было рекомендовано в разделе « Как настроить автоматическое продвижение? ».
Но для парольной фразы вам нужно запустить файл
ssh-agent
.источник
ssh-agent
, просто использовать другую фразу-менееgit
-толькоssh
-key:ssh-keygen -t ed25519 -f ~/.ssh/id_pushonly
.echo $'\nHost pushonly\nHostname DESTINATION\nIdentityFile ~/.ssh/id_pushonly\n' >> ~/.ssh/config
. НаDESTINATION
настройке,git-shell
как показано в superuser.com/a/444899/72223, используя pubkey из~/.ssh/id_pushonly.pub
. Необходимыйgit
-URL выглядит примерно такgit@pushonly:path/to/repo.git
. Для отладки:ssh git@pushonly COMMAND
необходимо запуститьgit-shell -c COMMAND
наDESTINATION
. ДляCOMMAND
смman git-shell
-t ed25519
? Я обычно использую-t rsa
, хотя в последнее время мне приходится добавлять-m PEM
вssh-keygen
( stackoverflow.com/a/53645530/6309 , stackoverflow.com/a/53729009/6309 ).ed25519
потому что он дает короткие и удобные строки для~/.ssh/authorized_keys
. Также очень интересно, что DJB пишет о ed255519 : Защита от побочных каналов (Spectre), меньшего количества ЦП и т. Д. Кстати, когдаsshd
я имею дело со старыми s, я обычно создаю для них специальный ключ, а затем настраиваю его в~/.ssh/config
.Вот простая инструкция по нажатию / вытягиванию без предоставления парольной фразы по ssh для людей, использующих Linux и Windows (git bash)
На вашем клиенте:
Проверьте, сгенерированы ли у вас ssh-ключи:
Если у вас нет ключа (две строки «ls: cannot access ...»), создайте новый. Если у вас есть какие-либо ключи, пропустите этот шаг.
Скопируйте свой ключ на удаленный сервер, с которого вы хотите получить или отправить, используя git:
Примечание. Во время этой операции вам потребуется ввести пароль. После этого ваши операции pull / push не будут запрашивать пароль.
Примечание 2: вы должны войти на сервер, используя имя_пользователя хотя бы один раз, прежде чем использовать эту процедуру (домашний каталог, в который копируются ключи ssh, создается при первом входе в систему)
источник
Вот сценарий bash для git для автоматического перехода
push
к удаленному репо$ cd /path/to/your/repository
тогда$ push
Поместите этот скрипт в файл, например
$HOME/.ssh/push
Свяжите его с
/bin
каталогом, чтобы его можно было вызвать просто$ push
командойисточник
Если вы используете Husky, он
post-commit
по умолчанию перезапишет ваш файл хуков.Мы используем эту команду в package.json для автоматической перебазировки и отправки любых коммитов в master. (Первый запуск
yarn add --dev git-branch-is
.)источник