git remote add with other SSH port


336

Gitで、ホストが別のSSHポートを使用しているときにリモートオリジンサーバーを追加するにはどうすればよいですか?

git remote add origin ssh://user@host/srv/git/example

回答:


573

あなたはこれを行うことができます:

git remote add origin ssh://user@host:1234/srv/git/example

1234 使用されているsshポートです


10
THX。単なる補足です。パスの部分では、ユーザーのホームディレクトリへの相対パスではなく絶対パスを使用してください...
Snicolas

@Snicolas:なぜ相対パスを使用しないのですか?
Hannes

12
@Sincolasユーザーのホームディレクトリにリポがある場合に機能します。/home/someuser/git-repos/example.git- > ssh:// someuser @ <host>:<port> /〜/ git-repos / example.git。btw:git clone --bare <adress>によって<name> .gitリポジトリを取得
MartinL

これは@Jameo ある絶対パス。
igorw

48
プロトコルを削除すると機能しないことに注意してください。つまり、以下を試しても機能しません。git remote add origin user@host:1234/srv/git/example
Bijay Rungta 2013

137

〜/ .ssh / configファイルを編集する必要があります。次のようなものを追加します。

Host example.com
    Port 1234

迅速なGoogle検索は示して、いくつかの 異なった私よりもより詳細にそれを説明するリソースを。


16
うまくいきました。私はこのアプローチをgitリモートに貼り付けるよりも気に入っています。ありがとう!この方法でも絶対パスを指定する必要はありません。
Michael van Rooijen

これはうまくいきます。また、その方法では、デフォルトのid_rsaの代わりに特定のキーを使用できます。それだけでなく、私のサーバーはうるさいし、多かれ少なかれあなたはそれを十分に速くしなければならず、パスワードを含めると失敗します。だから私も使用PasswordAuthentication noします。
Alexis Wilke、2014年

4
このように構成ファイルで非表示にするよりも、リモートで使用することをお勧めします。すべてが1か所にある場合、別のポート番号を忘れることはなく、他のユーザーが使用するURLをコピーして貼り付けることができます。
MarcH 2014年

1
@MarcH実際には状況によって異なります。VPSインスタンスでランダムなポート番号を使用したい。設定ファイル内にポートがあることは、共同編集者からの情報を差し控える1つの方法です(つまり、複数のリモートがある場合、デプロイメントのリモートホストは内部のソースコードリポジトリとは異なります)。
Ragunath Jawahar 2014

@RagunathJawaharランダムなポート番号を使用することは非常に一般的な使用例ではないと思います。
MarcH 2014年

29

ベストアンサーではうまくいきません。ssh://初めから必要でした。

# does not work
git remote set-url origin user@example.com:10000/aaa/bbbb/ccc.git
# work
git remote set-url origin ssh://user@example.com:10000/aaa/bbbb/ccc.git

17

あなたが編集している人のために ./.git/config

[remote "external"]                                                                                                                                                                                                                                                            
  url = ssh://evanc@www.foo.com:11720/aaa/bbb/ccc                                                                                                                                                                                                               
  fetch = +refs/heads/*:refs/remotes/external/* 

1
完璧です。しかし、1つの質問ですが、サブモジュールに対してこれをどのように行うのですか?動作していないようです。
m4l490n

10

ssh://プロトコルプレフィックスを使用する代わりに、SSH経由でgitにアクセスするために従来のURLフォームを引き続き使用できますが、1つの小さな変更があります。注意として、従来のURLは次のとおりです

git@host:path/to/repo.git

代替ポートを指定するにはuser@host、ポートを含むパーツをブラケットで囲みます。

[git@host:port]:path/to/repo.git

ただし、ポートの変更が一時的なものである場合は、リポジトリのリモートURLを変更する代わりに、別のSSHコマンドを使用するようにgitに指示できます。

export SSH_GIT_COMMAND='ssh -p port'
git clone git@host:path/to/repo.git # for instance

2
git @ host:portの周りに角括弧を追加することは、私にとっては美しく機能しました。私はgitlabを使用していますが、そのサーバーでは標準以外のポートが必要ですが、リポジトリへの絶対パスを使用することもできません(わかりません)。ありがとう
Thomas Le

1
これは、相対パスをサポートし、ssh構成に依存しないため、私にとって最も柔軟な方法のようです
user2882096
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.