我有一个git存储库,其结构类似于:
+--repo.git
|
+----+bootstrap.py
+----+buildout.cfg
+----+.gitignore
+----+webapp
|
+---------+manage.py
+---------+modules
+---------+templates
+---------+static
+---------+...
+---------+...我想将webapp文件夹的内容向上移动一级。我得到的回购结果应该是:
+--repo.git
|
+----+bootstrap.py
+----+buildout.cfg
+----+.gitignore
+----+manage.py
+----+modules
+----+templates
+----+static
+----+...
+----+...我是否可以简单地将webapp目录的所有文件向上移动一层,删除空的webapp目录,然后提交更改?这会保留webapp目录下文件的提交历史吗?
虽然对你们中的许多人来说这是一个非常简单的问题,但我想肯定的是。我最不想要的就是一杯吉特汤。
我试图移动这些文件,但是我丢失了提交历史记录,因为git并不真正处理移动或重命名。我确实知道,即使它在日志中显示为一个新文件,仍然可以使用git log中的一些选项查看该文件的提交历史。
据我所读,实现这一目标的最佳方法是使用git-filter。我对shell或git不是很在行,所以有人能告诉我执行上述操作需要什么吗?
发布于 2013-10-19 09:55:07
正确的方法是:
git mv repo.git/webapp/* repo.git/.
git rm repo.git/webapp
git add *
git commit -m "Folders moved out of webapp directory :-)"发布于 2014-02-05 15:21:39
Sumeet答案的另一个变体--在上面的"webapp“存储库目录中执行以下命令:
git mv webapp/* ./ -k-k - 跳过移动或重命名可能导致错误条件的操作,否则将得到:
fatal: not under version control, source=webapp/somefile, destination=somefile发布于 2017-12-18 16:52:29
通过在目标文件夹中执行以下操作,我就能够让它工作起来:
git mv webapp/* .在Windows中,*将不工作(如果出现错误Bad source将失败),但是如果您使用Git (它扩展了*通配符),它将在Windows中工作。
如果您正在使用Powershell,您还可以:
git mv (gci webapp/*) .或
git mv (get-childItem webapp/*) .https://stackoverflow.com/questions/7130850
复制相似问题