トラブルシューティング

SSHでリモートリポジトリに接続しようとしたときに、”Permission denied (publickey).” と表示されます

  • URLが間違っていませんか?
  • ローカルマシンに秘密鍵が正しく設置されていますか?
  • リモートに公開鍵が正しく設置されていますか?

Backlog上のリポジトリに対して秘密鍵/公開鍵が正しく設定されているかどうかを確認するには、下記コマンドを実行します。

$ ssh <space>@<space>.git.backlog.com

<space> は適宜ご利用のスペースに置き換えてください。例えば、"demo.backlog.com" ならば、"demo@demo.git.backlog.com" となります。

正しく設定されている場合、下記のようなログが出力されます。 エラーメッセージが表示された場合、再度上記の設定を見直してください。

Hi yourname! You've successfully authenticated, but Backlog does not provide shell access.
Connection to git.backlog.com closed.

※ドメインが backlog.jp の方は、backlog.jp を指定してください。

HTTPSでcloneできません

Gitの古いバージョンでは、 push や pull がうまくいかない場合があるようです。1.7.10 以降のバージョンをお使いください。SourceTreeやTortoiseGitをお使いの方は、各クライアントで使用しているGitのバージョンをご確認ください。

HTTPSでpush/pullするときに毎回パスワードを聞かれます

Gitのバージョン 1.7.10 以降では、Gitに備わっている認証APIとそれを利用した認証ヘルパーによって、毎回のパスワード入力を避けることができます。

Windows

git-credential-winstoreというツールを使えば、2回目以降のパスワード入力が不要となります。

Mac

入門編や発展編でMacのGUIクライアントとして取り上げている SourceTree では、Macのキーチェーンと連携する機能が標準で備わっています。 この機能を用いると、PullやPushの度に行っていたパスワード入力が不要となります。

コンソール

Macでは、キーチェーンと連携するための認証ヘルパーを使用することができます。 Homebrew をお使いの方は、Gitのインストール時に認証ヘルパーも自動でインストールされます。 それ以外の場合は、手動でインストールする必要があります。

認証ヘルパーがインストールされているかどうかは、下記のコマンドで確認できます。

$ git credential-osxkeychain
Usage: git credential-osxkeychain <get|store|erase>

認証ヘルパーがインストールされていない場合、下記のような出力が表示されます。

$ git credential-osxkeychain
git: 'credential-osxkeychain' is not a git command. See 'git --help'.

その場合、認証ヘルパーをダウンロードして適切なパスに置くことによって、利用できるようになります。

curl -s -O http://github-media-downloads.s3.amazonaws.com/osx/git-credential-osxkeychain
chmod u+x git-credential-osxkeychain
mv git-credential-osxkeychain /usr/local/bin

インストール後、認証ヘルパーを有効にする設定を追加します。

git config --global credential.helper osxkeychain

pushしても、リモートリポジトリに反映されません

新規に作成したリポジトリをcloneしてローカルリポジトリを作成し、そのローカルリポジトリ上でpushすると下記のようなログが出力されることがあります。

$ git push
No refs in common and none specified; doing nothing.
Perhaps you should specify a branch such as 'master'.
Everything up-to-date

これは、リモートリポジトリ上にまだmasterブランチが作成されていないためです。push時の引数が省略された場合、デフォルトではリモートリポジトリとローカルリポジトリの双方に存在するブランチが対象となります。そのため、リモートリポジトリに存在しないブランチをpushする場合は、リポジトリとブランチを明示的に指定する必要があります。

$ git push -u origin master

一度pushを実行するとmasterブランチが作られるため、以降のpushではリポジトリとブランチの指定を省略することができます。