私がやっている:
git clone ssh://user@host.com/home/user/private/repos/project_hub.git ./
私は得ています:
致命的:宛先パス '。' はすでに存在し、空のディレクトリではありません。
私は道を知っています。もう存在している。そして、ディレクトリが空であることを保証できます。(私は内部でlsを実行し、何も表示しません!)
そのプロジェクトを現在のディレクトリに複製するためにここで何が欠けていますか?
私がやっている:
git clone ssh://user@host.com/home/user/private/repos/project_hub.git ./
私は得ています:
致命的:宛先パス '。' はすでに存在し、空のディレクトリではありません。
私は道を知っています。もう存在している。そして、ディレクトリが空であることを保証できます。(私は内部でlsを実行し、何も表示しません!)
そのプロジェクトを現在のディレクトリに複製するためにここで何が欠けていますか?
回答:
その横にドットを置くだけ
git clone git@github.com:user/my-project.git .
からgit help clone
:
既存のディレクトリへのクローン作成は、ディレクトリが空の場合にのみ許可されます。
したがって、ディレクトリが空であることを確認してください(で確認ls -a
)。それ以外の場合、コマンドは失敗します。
ls -la
mkdir
ハードリンクを作成する.
と..
、デフォルトではので、新しいディレクトリは、技術的にはまったく、Unixベースのシステムでは「空」ですか?つまり、できるunlink .
と思いますが、unlink ..
クローン後に再度リンクし忘れた場合、後で大きな問題が発生する可能性があります
以下はおそらくすべてのケースでクローンと完全に同等ではありませんが、私にとってはトリックでした:
git init .
git remote add -t \* -f origin <repository-url>
git checkout master
私の場合、.git/config
クローンを作成したときに取得するファイルと同等のファイルが生成されます。
*
(すべてを無視する)一時的な.gitignoreも追加するgit checkout master
と、フォルダー内に既に他のファイルがあったとしても、実行できました。次に、リポジトリからコミットされたすべてのファイルが複製されました(そして一時的な.gitignoreは、リポジトリからの適切な.gitignoreによって上書きされました)。すべてうまくいきました。git clone -f
または何かを使用することにより、それ自体でこの方法で発生するはずです。
-t \*
はデフォルトなので不要です。
git remote set-head origin -a
重宝するかもしれません。これはrefs/remotes/origin/HEAD
、リモートリポジトリで設定されているように、オリジンのデフォルトブランチ()を設定します。git clone
とは異なり、これは自動的に行われgit remote add -f
ます。
リポジトリを複製できることを確認するには、一時ディレクトリに移動して、プロジェクトをそこに複製します。
git clone ssh://user@host.com/home/user/private/repos/project_hub.git
これはあなたのものをproject_hub
ディレクトリにクローンします。
複製が完了したら、このディレクトリを好きな場所に移動できます。
mv project_hub /path/to/new/location
これは安全で、周りに魔法のようなものを必要としません。
/path/to/new/location
これは確かに問題ではありません。
git clone your-repo tmp && mv tmp/.git . && rm -rf tmp && git reset --hard
行う
git clone https://user@bitbucket.org/user/projectname.git .
ディレクトリは空でなければなりません
現在のディレクトリが空の場合、これは機能します:
git clone <repository> foo; mv foo/* foo/.git* .; rmdir foo
解決策:この場合、解決策はを使用していたdot
ため、次のようになります。rm -rf .* && git clone ssh://user@host.com/home/user/private/repos/project_hub.git .
rm -rf .* &&
ディレクトリが空であることが確実な場合は省略できます。
クレジットは以下に行きます:@James McLaughlin以下のコメント
ls -d .*
. ..
me:〜/ tmp / tmp / tmp $
rm -rf ./.*
、現在のディレクトリの下にある隠し(ドット)ファイルとディレクトリを削除する場合(@stackunderflowが私の前に述べたように)、「安全」です。しかしrm -rf
、経験の浅いユーザーにとっては危険なコマンドなので、注意してください。ちょうど私の2セント。
.git
後にgit init
(私はそれを知っていた)
-rf
通常のファイルを削除する必要はありません。この回答を削除するか、少なくとも別の回答を受け入れることを検討してください。
@GoZonerの答えを改善する:
git clone <repository> foo; shopt -s dotglob nullglob; mv foo/* .; rmdir foo
shoptコマンドはこのSOの回答から取得され、Bashの「mv」コマンドの動作を変更してドットファイルを含めます。ドットファイルには、.gitディレクトリとその他の隠しファイルを含める必要があります。
また、これは、現在のディレクトリ(。)が空の場合に限り、そのまま動作することが保証されていますが、クローンされたリポジトリ内のどのファイルも現在のディレクトリ内のファイルと同じ名前でない限り、動作します。現在のディレクトリの内容が気にならない場合は、-f(force)オプションを 'mv'コマンドに追加できます。
私にも同じ必要がありました。私の場合、Webサーバーのインストールによって作成される標準のWebフォルダーがありました。この図では、これが
/server/webroot
webrootには他の標準的なファイルとフォルダーが含まれています。私のリポジトリには、サイト固有のファイル(html、javascript、CFMLなど)しかありません。
私がしなければならなかったすべては:
cd /server/webroot
git init
git pull [url to my repo.git]
ターゲットフォルダーでgit initを実行する場合は注意が必要です。そうしないと、次の2つのいずれかが発生します。
fatal:gitリポジトリ(または親ディレクトリ)ではありません:.git
これは、自分のwebrootフォルダーにある「標準」ファイルのいずれにも影響を与えませんでしたが、それらを.gitignoreファイルに追加して、その後のコミットに誤って追加されないようにする必要がありました。
これは、空でないディレクトリに「クローン」する簡単な方法のようです。プルによって作成された.gitおよび.gitignoreファイルが不要な場合は、プルの後に削除してください。
shopt -s dotglob
git clone ssh://user@host.com/home/user/private/repos/project_hub.git tmp && mv tmp/* . && rm -rf tmp
以下のように、コマンドの最後に。(ドット)を使用します
git clone URL。
fatal: destination path '.' already exists and is not an empty directory.
私はこれを見る:
fatal: destination path 'CouchPotatoServer' already exists and is not an empty directory.
私の検索の中で、私は偶然に出会いました:
https://couchpota.to/forum/viewtopic.php?t=3943
Clinton.Hallによるエントリを探してください...(私が行ったように)これを試すと、おそらくaccess denied
応答が得られます。最初の手がかりがあったため、最初のエラー(私にとって)は実際には間違ったルートを回避していました問題。
Windowsでのこの解決策:cmd
またはを実行してからgit elevated
、次を実行してください:
git clone https://github.com/RuudBurger/CouchPotatoServer.git
上記は私の問題であり、単に昇格することでうまくいきました。
の解決策Windows
は、リポジトリを他のフォルダに複製し、コピーして元の場所に貼り付けるか、単に非.git
表示のフォルダをコピーすることです。
リポジトリがプライベートの場合は、 最初にsshキーを追加してください => git clone git@github.com:yourusername / yourrepo.git else == git clone https://github.com/yourusername/yourrepo.git
私はこの質問を何度も見ました-そして私git pull
はあなたのディレクトリの中からトリックをすることを指摘したいだけです。
私がここで何かを見逃していない限り-それは私のために働いた。
git pull
リポジトリが定義されていない場合、何も実行されません。これは、機能の重要な部分ですgit clone
。
ls -a
、あなたは見てい.git
たディレクトリを?