2013-09-30 18 views
54

私はディレクトリgitrepo1を持っています。このディレクトリはgitリポジトリです。gitリポジトリを別のディレクトリに移動してそのディレクトリをgitリポジトリにするには?

  • 私は newrepo別のディレクトリにこのgitrepo1を移動したいです。

  • newrepo

  • gitrepo1はただのなしで、(newrepo内)今directortyでなければなりませんGitの歴史の損失なしで新しいgitリポジトリであるべきで、ディレクトリgitrepo1が含まれている必要があります。 gitインデックスすなわち、それはもはや独立したgitリポジトリまたはサブモジュールではありません。

どうすればいいですか?

+6

'mv girepo1 newrepo' ?? – sircapsalot

答えて

65

非常に簡単です。 Gitはディレクトリの名前が何であるか気にしません。それは内部だけを気にします。したがって、簡単に行うことができます:

# copy the directory into newrepo dir that exists already (else create it) 
$ cp -r gitrepo1 newrepo 

# remove .git from old repo to delete all history and anything git from it 
$ rm -rf gitrepo1/.git 

リポジトリが大きく、履歴が長い場合、コピーは非常に高価です。あなたはあまりにも簡単にそれを避けることができます:あなたはnewrepoを作成したら、あなたはそれをしたい場合は、先にもnewrepo内で、どこにでも可能性がありgitrepo1を入れて

# move the directory instead 
$ mv gitrepo1 newrepo 

# make a copy of the latest version 
# Either: 
$ mkdir gitrepo1; cp -r newrepo/* gitrepo1/ # doesn't copy .gitignore (and other hidden files) 

# Or: 
$ git clone --depth 1 newrepo gitrepo1; rm -rf gitrepo1/.git 

# Or (look further here: http://stackoverflow.com/q/1209999/912144) 
$ git archive --format=tar --remote=<repository URL> HEAD | tar xf - 

。プロシージャーは変更されません。書き込むパスはgitrepo1です。

+3

+1。 gitバージョン1.7.8または1.7.9で作成されたリポジトリに影響を及ぼすことは、[this gotcha](http://stackoverflow.com/a/17747571/761202)に言及する価値があります。これは、git repoを動かすと使用できなくなりますそれが簡単に修正されたことを示しています)。 – AD7six

+0

@ AD7six、リンクありがとう – Shahbaz

+1

私はwndowsマシン上でコマンドプロンプトを使用しています。私は "cp"コマンドを見つけることができませんでした。他のOSに特有の "cp"コマンドですか? – LP13

関連する問題