142

ディレクトリgitrepo1があります。このディレクトリは git リポジトリです。

  • このgitrepo1を別のディレクトリnewrepoに移動したいと思います。

  • ディレクトリnewrepoは、git 履歴が失われない新しい git リポジトリである必要があり、ディレクトリgitrepo1が含まれている必要があります。

  • ディレクトリgitrepo1は、現在 ( newrepo内の)ディレクトリであり、.gitインデックスはありません。つまり、独立した git リポジトリまたはサブモジュールであってはなりません。

これどうやってするの?

4

5 に答える 5

142

とても簡単です。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

リポジトリが大きく、長い履歴がある場合、コピーは非常に高価であることに注意してください。これも簡単に回避できます。

# 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 -

を作成したらnewrepo、配置先はgitrepo1どこでも構いnewrepoません。手順は変更されず、書きgitrepo1戻すパスのみが変更されます。

于 2013-09-30T14:50:37.917 に答える