2011-10-25 12 views
9

Bitbucket(GitとMercurialをサポート)のすべてのリポジトリを私のローカルマシンにバックアップするツールを書いています。Git * INTO *をそのままのリポジトリでプル/フェッチするには?

それはすでに私はこのようにそれを行うMercurialの、のために働く:

  • bare Gitのリポジトリのように同じ)ローカルマシン上の作業コピーせずに
    を新しい空のリポジトリを作成しますリモートのリポジトリからローカルの空のリポジトリに移動する

私はGitで同じことをしようとしています。

I already found out私は直接pullを裸のレポジトリにすることはできません。代わりにfetchを使用する必要があります。

だから私はそれを試してみました:明らかに

C:\test>git fetch https://github.com/SamSaffron/dapper-dot-net.git 
remote: Counting objects: 1255, done. 
remote: Compressing objects: 100% (1178/1178), done. 
remote: Total 1255 (delta 593), reused 717 (delta 56) 
Receiving objects: 100% (1255/1255), 13.66 MiB | 706 KiB/s, done. 
Resolving deltas: 100% (593/593), done. 
From https://github.com/SamSaffron/dapper-dot-net 
* branch   HEAD  -> FETCH_HEAD 

Gitのは何かをフェッチでしたが、ローカルリポジトリはその後空です。
git logfatal: bad default revision 'HEAD'となります)

私は間違っていますか?

免責事項:
私は(私は通常のMercurialを使用)だけに非常に、非常に基本的なGitの知識を持っています。
そして、私はWindowsを使用しています。

+0

可能重複(http://stackoverflow.com/questions/6214711/git-log-and-show-on-a-bare-repo) – CharlesB

+0

@CharlesB :このリンクの答えはどれも私のためには役に立たない。 'git log branchname'(私は' master'を試しました)ではなく、 'リポジトリ内のすべてをビジュアル化するため... 'というコマンドではなく、askerのために働いた' git branch -va'のようなものでもありません。答え。 –

答えて

14

はあなたが本当にバックアップしたい場合、私はあなたを考える

git fetch https://github.com/SamSaffron/dapper-dot-net.git master:master 
+2

これは、マスターブランチをフェッチするように見えます(Dapperには他のブランチがないため、https://github.com/dontangg/noccoで試しました)。 **すべての**ブランチをフェッチすることは可能ですか?これはバックアップツールとなります。もちろん、そこにあるすべてのものをバックアップしたいと思います。 –

+2

'' *:* ''や '' refs/heads/*:refs/heads/* ''のようなものがあります。 –

+0

'*:*'は私にとってはうまくいかない( 'fatal:無効なrefspec '*。*'')が、 'refs/heads/*:refs/heads/*'はそのトリックを行います。ありがとうございました! –

3

を試してみてください。 $ git clone --mirror XXXXコマンドを試すことができます。リポジトリからほぼすべてを取得します。それが役に立つと願っています。

をバックアップするには
+2

でしたが、バックアップは定期的に実行します。最初の実行後、ローカルリポジトリはすでに存在しています - >私は 'pull '/' fetch' /何とか実行しなければなりません。 –

+1

あなたが裸のあなたを写した後。 'git fetch --all --progress -v'を使ってローカルベアを更新することができます。 –

2
$ git fetch https://github.com/SamSaffron/dapper-dot-net.git +refs/heads/*:refs/heads/* --prune 
2

あなたの裸のリポジトリへのリモートリポジトリregulary最初

git config remote.origin.url https://github.com/SamSaffron/dapper-dot-net.git 
git config remote.origin.fetch "+*:*" 

を設定し、単にバックアップに

git fetch --prune 

を実行します。

  • リモートリポジトリのクローン作成中にすでに設定されているはずなので、おそらく最初の設定をスキップすることができます。
  • アスタリスク(*)がシェルから解釈されないようにするには、上記のコマンドで二重引用符(")を囲んでください。
  • 早送り以外の更新を許可するには、プラス記号が必要です。リモートの現在の状態をバックアップする場合は、おそらくあなたの意図です。
  • オプション--pruneは、存在しないブランチによっても削除するために使用されます。[裸のレポのGitログとショー]の
+2

すべての関連する事実を一つの場所で分かりやすく説明すると、二重引用符についてのポイントと、[refspec](https://git-scm.com/book/en/)の前に '+ ' v2/Git-Internals-The-Refspec)を参照してください。 – starfry

関連する問題