293

Git リポジトリを作成したプロジェクトがあります。

$ cd myproject  
$ git init  
$ git add .  
$ git commit  

別のマシンでベア クローンを作成したいと考えていました。

$ cd ..  
$ git clone --bare myproject  ssh://user@server:/GitRepos/myproject.git  

クローンを実行しましたが、回答を出力しませんでした。サーバー マシンにログオンし、ファイルがどのように格納されているかを確認しようとしました。パス /GitRepos が空だったので、もう一度クローンを作成することにしました。

$ git clone --bare myproject  ssh://user@server:/GitRepos/myproject.git

今回の答えは:

致命的: 宛先パス 'ssh://user@server:/GitRepos/myproject.git' は既に存在し、空のディレクトリではありません。

しかし、私は道が空であることを見ました。
何が起きてる ?

4

10 に答える 10

256

これはおそらく質問とは直接関係ありません。しかし、私が自分で犯した間違いの 1 つは、OP で見た URL の指定です。つまり、絶対パスを示すコロンとスラッシュのssh://user@server:/GitRepos/myproject.git両方があります。:/

その後、Git clone, ssh: Could not resolve hostname – git , development – Nicolas Kuttler (gitバージョン 1.7.9.5 で発生していたエラー) を見つけました。

最初に使用したコマンドの問題は、scp のような構文を使用しようとしたことです。

...これも私の問題でした!したがって、基本的にgitwithsshでは、どちらかを使用します

  • ssh://username@host.xz/absolute/path/to/repo.git/- サーバー上の絶対パスのスラッシュのみ
  • username@host.xz:relative/path/to/repo.git/- コロンのみ (サーバー上の相対パス (サーバー マシン上ssh://のホーム ディレクトリからの相対パス) を含めてはなりません)username

これが誰かに役立つことを願っています、
乾杯!

于 2013-04-21T18:01:36.083 に答える
175

GitHub のリポジトリについては、次を試してください。

git clone ssh://git@github.com/<user>/<repository name>.git

ssh 経由でクローンを作成するように git を設定するには、以下を参照してください。

于 2014-06-07T12:54:47.633 に答える
52

サーバーと呼んでいるものに対してcloneコマンドを実行する必要があります。ただし、ローカルクライアントでsshサーバーを実行していないため、とにかく機能しません。このアプローチに従うことをお勧めします(私はこれをメモリから行っているので、マニュアルを確認してください)

  1. サーバーマシンにログインします。
  2. を使用してベアリポジトリを作成するgit init --bare
  3. クライアントマシンでは、リポジトリをサーバーにプッシュできます。git remote add origin ssh://user@server:/GitRepos/myproject.gitに続くgit push origin master
于 2011-05-29T13:21:58.367 に答える
25

免責事項: これは、bobbalubaによるコメントの単なるコピーであり、今後の訪問者が見やすいように作成されています。それは他のどの答えよりも私を助けました。


例としてssh://使用する場合は、プレフィックスを削除する必要がありますgit clone

git clone git@github.com:owner/repo.git
于 2018-11-07T22:04:44.843 に答える
4

ギット 101:

git分散バージョン管理システムです。git を起動して実行するためにサーバーは必ずしも必要ではありません。それでも、クールに見えるので、それをやりたいと思うかもしれませんよね? (複数のコンピューターから 1 つのプロジェクトで作業する場合にも便利です)。

したがって、「サーバー」を実行するには、実行する必要がありますgit init --bare <your_project>.git。これにより、空のリポジトリが作成されます。これにより、ディレクトリの構成ファイルをいじる必要なく、マシンにインポートできます.git

この後、動作するはずのクライアントでレポを複製できますが、一部のクライアント (つまりgit-gui) が完全に空のレポの複製に失敗することがわかりました。これを回避するには、実行する必要がありますcd <your_project>.git && touch <some_random_file> && git add <some_random_file> && git commit && git push origin master。(過去にそのマシンの git のユーザー名と電子メールを構成していない場合は、構成する必要があるかもしれないことに注意してください。実際に実行するコマンドは、表示されるエラー メッセージに記載されているため、省略します。)

したがって、この時点で、実行するだけでリポジトリを任意のマシンにクローンできますgit clone <user>@<server>:<relative_path><your_project>.git。(他の人が指摘しているssh://ように、絶対パスを使用する場合は、プレフィックスを付ける必要があるかもしれません。)これは、クライアントからサーバーにすでにログインできることを前提としています。ssh(多くのものをリモート サーバーにプッシュする場合は、構成ファイルと のキーをセットアップすることでボーナス ポイントも得られます。)

いくつかの関連リンク:
これは、あなたが知る必要があることをほとんど教えてくれます。
これは、git の基本的な仕組みは知っているが、正確な構文を忘れてしまうことがある人向けです。

于 2014-02-27T18:05:59.843 に答える
2

私は、git-flow、および 3 つの「ポイント」またはユースケース、git 中央リポジトリ、ローカル開発、および運用マシンを含む回答を試みたいと考えています。 これは十分にテストされていません

私は信じられないほど具体的なコマンドを出しています。と言う代わりに<your folder>、私は言い/root/gitます。元のコマンドを変更する唯一の場所は、特定のサーバー名を に置き換えることexample.comです。フォルダの目的を説明しますので、それに応じて調整してください。混乱があればお知らせください。回答を更新します。

サーバー上の git バージョンは 1.7.1 です。サーバーは CentOS 6.3 (Final) です。

開発マシンの git バージョンは 1.8.1.1 です。これは Mac OS X 10.8.4 です。

中央リポジトリと運用マシンは同じマシン上にあります。

svn ユーザーが「サーバー」として関連付けることができる中央リポジトリは、次のように構成されます。/root/gitすべての git リポジトリを保持するフォルダーがあります。「flowers」と呼ぶプロジェクトの git リポジトリを作成したいと考えています。

cd /root/git
git clone --bare flowers flowers.git

git コマンドは、次の 2 つのメッセージを出しました。

Initialized empty Git repository in /root/git/flowers.git/
warning: You appear to have cloned an empty repository.

心配する必要はありません。

開発マシンでは次のように構成されています。/home/kinjal/Sitesすべてのプロジェクトを配置するフォルダーがあります。中央の git リポジトリを取得したいと考えています。

cd /home/kinjal/Sites
git clone root@example.net:/root/git/flowers.git

これで、何かを追加できるようになります。最初に git flow をセットアップしました

git flow init -d

デフォルトでは、これはブランチにありdevelopます。ここにコードを追加します。次に、中央の git リポジトリにコミットする必要があります。

git add .
git commit -am 'initial'
git push

この時点で、開発ブランチにプッシュされました。これも master ブランチに追加したいです。

git flow release start v0.0.0 develop
git flow release finish v0.0.0
git push

リリース開始からリリース終了までの間に何もしなかったことに注意してください。リリースを完了したとき、2 つのファイルを編集するように求められました。これにより、開発ブランチがマスターにプッシュされました。

中央の git リポジトリと同じマシン上にある本番サイトで、リポジトリを に配置したいと考えています/var/www/vhosts/example.net。私はすでに持っています/var/www/vhosts

cd /var/www/vhosts
git clone file:///root/git/flowers.git example.net

本番マシンも別のマシンにある場合、git cloneコマンドは開発マシンで使用されるコマンドのようになります。

于 2013-07-13T07:12:30.250 に答える
1

前もって、私はGITスキルが少し不足しています。

これにより、マシン上にベアリポジトリのクローンが作成されます。このリポジトリに.gitは、隠しディレクトリが含まれるフォルダのみが含まれます。実行するls -alと、リポジトリが表示さ.gitれるかcd .git、リポジトリ内に表示されます。

于 2011-05-29T13:18:04.957 に答える