1. ホーム
  2. git

[解決済み] gitリポジトリを別のディレクトリに移動して、そのディレクトリをgitリポジトリにするには?

2022-05-16 02:59:56

質問

あるディレクトリに gitrepo1 . このディレクトリはgitのリポジトリです。

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

  • ディレクトリ 新規レポ は、git の履歴を失わない新しい git リポジトリである必要があり、ディレクトリ gitrepo1 .

  • ディレクトリ gitrepo1 は単にディレクトリであるべきです(内部 newrepo の中)で、何も .git インデックスなしで、つまり独立した git リポジトリやサブモジュールであってはいけません。

どうすればいいのでしょうか?

どのように解決するのですか?

とても簡単なことです。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 を書き戻すだけです。