我有一个目录gitrepo1.该目录是一个git存储库.
我想将这个gitrepo1移动到另一个目录newrepo.
newrepo应该是新的git存储库,不会丢失git历史记录,并且应该包含目录gitrepo1
gitrepo1现在应该是一个直接的(在newrepo内部),没有任何.git索引.即.它应该不再是一个独立的git存储库或子模块.
我怎样才能做到这一点?
这个问题可能很愚蠢,但我一直想知道它.这是关于git存储库,但我认为它对于其他DVCS的本地存储库是相同的.
让我们说我的项目在启动时是这样的:
那么当你设置它时,它是如何工作的?
让我说我将Project文件夹移动到其他地方,我是否需要更改任何内容?或者.git文件夹中的所有存储库内容仅相对于Project文件夹,忽略Project上方的整个文件树.
我很确定移动Project无所谓,但我只是想确定.
我在一个小的快速ssd上有我的源代码和.git文件夹,我想在我的第二个较大的较慢的硬盘上有.git目录,并将我的工作代码保存在我的快速小ssd上,是否可能?怎么样?谢谢.
我想我的本地工作副本.git目录会随着时间的推移而增长(使用新版本),因此在我更大的本地硬盘上使用它是有意义的.工作副本的增长速度并不快,因此它可以在ssd上发挥作用,因为它可以更快地编译.
另一个有趣的奖励是我将在2个差异驱动器上拥有源代码(工作代码和.git repo),这对笔记本电脑来说更具保护性....
我正在使用Windows
我从不期望重命名git repo,更具体地说,它是顶级文件夹保存项目,会非常困难.是的,项目包含一些子模块,但它是需要重命名的顶级文件夹,而不是子模块文件夹.Git似乎在其子模块机制中记录了一些奇怪的绝对路径.
让我们假设一下
/tmp.proj_master和proj_mod.porj_master,proj_ALL然后克隆prom_mod为其中的子模块.proj_ALL为proj_onebillion.然后黑魔法发生了.以下步骤将重现我提到的问题.我使用的git版本是:
$ git --version
git version 1.7.9.5
Run Code Online (Sandbox Code Playgroud)
初始化proj_master.
$ cd /tmp
$ mkdir proj_master; cd proj_master
$ git init .
$ touch README
$ git add .; git commit -m "hello proj_master"
Run Code Online (Sandbox Code Playgroud)初始化proj_mod.
$ cd /tmp
$ mkdir proj_mod; cd proj_mod
$ git init .
$ touch …Run Code Online (Sandbox Code Playgroud)我有一个我去年在同一个盒子上使用的git repo.今天我运行git status并收到错误消息:
fatal: Not a git repository (or any parent up to mount parent /home)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
Run Code Online (Sandbox Code Playgroud)
我有一个.git目录,它填充了我为该repo提供的数千次提交.我不想重新初始化回购,因为担心它会覆盖历史.我也不是真的想从github重新拉出它,因为我已经在分支机构中隐藏了一些变化,我有一段时间没有推到GH.
编辑:
我有理由相信这不是我的环境.其他git回购工作正常