Comment pousser automatiquement après la validation du dépôt git?
Comment puis-je configurer git pour pousser automatiquement à une distance de pensions de titres (y compris automatiquement donner à ma phrase) de passe après chaque commit local repo?
- Ce protocole vous pousser plus? Si c'est une demande d'un mot de passe, je suppose que c'est soit SSH ou HTTP.
- Aussi, il est toujours utile avec git questions de mentionner au moins le système d'exploitation que vous utilisez.
- Je doute de la sagesse de cet ensemble vers le haut. Cela supprime toute possibilité de réorganiser vos modifications dans un autre ensemble de commits (changement d'année de base, en particulier). Je fais trop d'erreurs pour un jeu comme celui d'être utile pour moi.
Vous devez vous connecter pour publier un commentaire.
D'abord, assurez-vous que vous pouvez pousser manuellement, sans fournir votre mot de passe. Si vous appuyez sur HTTP ou HTTPS, ce sera une affaire de la création d'un
.netrc
fichier avec les informations de connexion ou l'ajout de votre nom d'utilisateur et mot de passe dans l'URL de la télécommande. Si vous utilisez SSH, vous pouvez soit créer une paire de clés où la clé privée n'ont pas de mot de passe, ou utiliserssh-agent
pour le cache de votre clé privée.Ensuite, vous devez créer un fichier exécutable (
chmod +x
) le fichier en.git/hooks/post-commit
qui contient les éléments suivants:... personnalisation de cette ligne si vous voulez pousser à une distance autre que
origin
, ou pousser une branche autre quemaster
. Assurez-vous que le fichier exécutable..git/config
avec le préfixefeature/xy/
.Si vous commencez à utiliser plus que la branche master, vous pouvez pousser automatiquement la branche courante. Mon crochet (
.git/hooks/post-commit
) ressemble à ceci:Il pousse la branche courante, si l'on peut déterminer le nom de la branche avec git symbolique-réf.
"Comment obtenir de l'actuel nom de la branche dans Git?" traite de ce sujet et d'autres façons d'obtenir de l'actuel nom de la branche.
Automatique push pour chaque branche peut être dérangeant lorsque l'on travaille en tâche de branches où vous vous attendez à certaines saucisse de prise de arriver (vous ne serez pas en mesure de rebase facilement après avoir poussé). De sorte que le crochet ne va pas pousser les branches qui se terminent avec la définition d'un suffixe (dans l'exemple "_local).
#!/bin/sh
pour le faire fonctionner. Sinon, il n'arrêtait pas de dire:error: cannot run .git/hooks/post-commit: No such file or directory
. Merci à vous, j'aime votre solution meilleure.Créer un fichier nommé "post-commit" dans le .git/hooks répertoire avec le contenu "git push", mais si vous souhaitez fournir automatiquement un mot de passe, modification sera nécessaire.
Ce git-autopush script vous permet de configurer un post-commit hook, similaire à ce qui a été recommandé dans "Comment configurer automatique de pousser?".
Mais pour le mot de passe, vous devez exécuter un
ssh-agent
.ssh-agent
, il suffit d'utiliser une autre phrase de passe-moinsgit
seulessh
-clés:ssh-keygen -t ed25519 -f ~/.ssh/id_pushonly
.echo $'\nHost pushonly\nHostname DESTINATION\nIdentityFile ~/.ssh/id_pushonly\n' >> ~/.ssh/config
. SurDESTINATION
configurergit-shell
comme indiqué dans le superuser.com/a/444899/72223 à l'aide de pubkey de~/.ssh/id_pushonly.pub
. Le besoingit
-URL est quelque chose commegit@pushonly:path/to/repo.git
. Debug:ssh git@pushonly COMMAND
devez exécutergit-shell -c COMMAND
surDESTINATION
. PourCOMMAND
voirman git-shell
-t ed25519
? J'utilise généralement-t rsa
, bien que récemment que j'ai à ajouter-m PEM
àssh-keygen
(stackoverflow.com/a/53645530/6309, stackoverflow.com/a/53729009/6309).ed25519
parce qu'il donne à court et maniable lignes pour~/.ssh/authorized_keys
. Il est également très intéressant ce DJB écrit à propos de ed255519: Sécurisez-le contre des canaux latéraux (Spectre), moins de CPU, etc. BTW, quand il s'agit de vieuxsshd
s, j'ai l'habitude de créer une clé spéciale pour eux et ensuite configurer cela dans~/.ssh/config
.Ici est simple instruction pour pousser ou tirer, sans fournir de mot de passe multiterme via ssh pour les personnes utilisant Linux et Windows(git bash)
Sur votre client:
De vérifier si vous avez les clés ssh généré:
Si vous n'avez pas de clé (deux "ls: impossible d'accéder à ..." lignes) générer un nouveau. Si vous avez l'une des clés de sauter cette étape.
Copie de votre clé à un serveur distant à partir duquel vous souhaitez tirer ou de pousser à l'aide de git:
Remarque: Vous devrez fournir le mot de passe lors de cette opération. Après que votre pull/push opérations ne pas demander de mot de passe.
Note2: vous devez Vous connecter au serveur à l'aide user_name au moins une fois avant d'utiliser cette procédure (répertoire de base à laquelle les clés ssh sont copiés est créé lors de la première connexion)
Voici script bash pour que git automatiquement
push
à une distance repo$ cd /path/to/your/repository
puis$ push
Mettre ce script dans un fichier par exemple
$HOME/.ssh/push
Lien à
/bin
répertoire de sorte qu'il peut être appelé par juste$ push
commande