ローカルリポジトリにコミットするたびに自動的にリモートレポ(パスフレーズの自動提供を含む)にプッシュするようにgitを設定しますか?gitでコミットした後に自動的にプッシュする方法は?
答えて
まず、パスワードを入力せずに手動でプッシュできることを確認します。 HTTPまたはHTTPSを押している場合は、creating a .netrc
file with the login detailsまたはadding your username and password into the URL for the remoteのいずれかの場合があります。 SSHを使用している場合、秘密鍵がパスワードを持たない鍵ペア、またはuse ssh-agent
to cache your private keyを作成することができます。あなたはorigin
よりも、リモート他にプッシュ、またはmaster
以外のブランチをプッシュする場合は、その行をカスタマイズ...
#!/bin/sh
git push origin master
:
その後、あなたは次のものが含まれてい.git/hooks/post-commit
にファイルを作成する必要があります。そのファイルを実行可能にすることを確認してください。
このgit-autopushスクリプトでは、 "How configure automatic pushing?"で推奨されているのと同様に、ポストコミットフックを設定できます。
ただし、パスフレーズの場合はrun a ssh-agent
が必要です。
マスターブランチ以上の使用を開始した場合は、現在のブランチを自動的にプッシュしたい場合があります。私のフックは次のようになります。
#!/usr/bin/env bash
branch_name=`git symbolic-ref --short HEAD`
retcode=$?
non_push_suffix="_local"
# Only push if branch_name was found (my be empty if in detached head state)
if [ $retcode = 0 ] ; then
#Only push if branch_name does not end with the non-push suffix
if [[ $branch_name != *$non_push_suffix ]] ; then
echo
echo "**** Pushing current branch $branch_name to origin [i4h_mobiles post-commit hook]"
echo
git push origin $branch_name;
fi
fi
それはgitのシンボリック-REFと支店名を決めることができればそれは、現在のブランチをプッシュします。
"How to get current branch name in Git?"は、この方法と現在のブランチ名を取得する他の方法を扱います。
sausage makingが発生すると予想されるタスクブランチで作業すると、すべてのブランチの自動プッシュが邪魔になることがあります(プッシュした後は簡単に再分割できません)。したがって、フックは定義された接尾辞で終わるブランチをプッシュしません(この例では "_local")。ここで
は、クライアント上でLinuxとWindows(のgit bashの)
を使用している人々のためにSSH経由でパスフレーズを提供せずに引っ張っ/プッシュするための簡単な命令である:あなたが生成されたSSHキーを持っている場合
をチェック:
$ ls ~/.ssh/id_rsa.pub; ls ~/.ssh/id_dsa.pub /c/Users/Cermo/.ssh/id_rsa.pub <-- I have RSA key ls: cannot access '/c/Users/Cermo/.ssh/id_dsa.pub': No such file or directory
あなたが任意のキー(2「のLS:アクセスすることはできません...」の行を)持っていない場合は、新しいものを生成します。いずれかのキーがある場合は、このステップをスキップしてください。
$ ssh-copy-id [email protected]_name /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys [email protected]_name's password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh '[email protected]_name'" and check to make sure that only the key(s) you wanted were added.
注:
$ ssh-keygen.exe
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/Cermo/.ssh/id_rsa):
Enter passphrase (empty for no passphrase): <-- press Enter
Enter same passphrase again: <-- press Enter
は、あなたが引くかのgitを使用してプッシュしたいからリモートサーバへの鍵をコピーしますが、この操作中にパスワードを入力する必要があります。その後プル/プッシュ操作はパスワードを要求しません。
注2:あなたはどのようなプロトコルを
- 1. Git - マスタリポジトリにプッシュした後にプロダクション/ステージングサーバを自動アップデートする
- 2. 自動的にプッシュする方法
- 3. gitでコミット時にバージョンファイルを自動的に変更
- 4. リバースパッチを使用したプッシュ後にGitコミットを元に戻しますか?
- 5. コミット後にコミット後のスクリプト(フック)が起動しないGit
- 6. GIT:リモートリポジトリにプッシュされた複数のコミットをスクラッシュする方法は?
- 7. Gitを使って変更をコミットしてプッシュする方法
- 8. sucessfullマージ後に自動コミットを行う方法は?
- 9. は、自動的に各チェンジに私がコミットするたびに
- 10. git-svn Kerberosをコミットした後のコミット
- 11. Gitを使用してリモートリポジトリにプッシュされたコミットを取り除く方法
- 12. git rebaseを使用すると自動的に空のコミットをスキップします
- 13. SQL ServerからOracleに自動的にデータをプッシュする方法は?
- 14. Git:手動で削除したファイルをコミットするには?
- 15. タグ付きのコミットをgitのリモートブランチにプッシュするには?
- 16. コミット時にdev/QAサーバーでgit pullプロセスを自動化する
- 17. gitがコミットして間違ったブランチにプッシュ
- 18. Devise + CanCan、更新後にログアウトしたユーザーが自動的にサインアウトする方法
- 19. ダウンロード後にファイルを自動的に実行する方法
- 20. インストール後に自動的にショートカットを作成する方法
- 21. リモートgitリポジトリにコミットする方法
- 22. ポスト受信gitでコミット後にファイルを無視する方法は?
- 23. Gitで最後のコミットを一時的に削除するには?
- 24. コミット後にgitフックを使用する
- 25. マージ後のgitブランチをマスターに自動的に削除
- 26. git pull javaで追加、コミット、プッシュ
- 27. Git - 1つの統合コミットで新しいリモートにプッシュ
- 28. リモートブランチをプルダウンした後にgitがコミットする
- 29. Git:プッシュ後にファイルを削除する
- 30. リストビューを最後に追加したアイテムに自動的にスクロールする最適な方法は何ですか?
を超える推進している(SSHキーが最初のログイン時に作成されたコピーされるために、ホームディレクトリ)は、この手順を使用する前に、少なくとも1回のuser_nameを使用してサーバーにログインする必要がありますか?パスワードの入力を求められたら、これはSSHかHTTPのどちらかと仮定します。 –
また、gitの質問では、使用しているオペレーティングシステムについて少なくとも言及することが役に立ちます。 –
私はそのような設定の知恵に疑問を呈します。これにより、変更内容を異なるコミットセット(特にリベース)に再編成する機能が削除されます。私はこのような設定のために、あまりにも多くの間違いを犯して、私にとって有益なものになってしまう。 – jpmc26