如何将git存储库移动到另一个目录,并使该目录成为git存储库?
我有一个目录gitrepo1 。 这个目录是一个git仓库。
-
我想把这个gitrepo1移动到另一个目录newrepo 。
-
newrepo应该是新的git存储库,不会丢失git历史logging,并且应该包含目录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 -
一旦你创buildnewrepo
,把gitrepo1
的目的地可以在任何地方,即使在newrepo
如果你想要它。 它不会改变程序,只是你写回gitrepo1
的path。