首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将所有git内容移到文件夹层次结构的一级上?

如何将所有git内容移到文件夹层次结构的一级上?
EN

Stack Overflow用户
提问于 2011-08-20 09:14:43
回答 10查看 79.1K关注 0票数 107

我有一个git存储库,其结构类似于:

代码语言:javascript
复制
+--repo.git
|
+----+bootstrap.py
+----+buildout.cfg
+----+.gitignore
+----+webapp
|
+---------+manage.py
+---------+modules
+---------+templates
+---------+static
+---------+...
+---------+...

我想将webapp文件夹的内容向上移动一级。我得到的回购结果应该是:

代码语言:javascript
复制
+--repo.git
|
+----+bootstrap.py
+----+buildout.cfg
+----+.gitignore
+----+manage.py
+----+modules
+----+templates
+----+static
+----+...
+----+...

我是否可以简单地将webapp目录的所有文件向上移动一层,删除空的webapp目录,然后提交更改?这会保留webapp目录下文件的提交历史吗?

虽然对你们中的许多人来说这是一个非常简单的问题,但我想肯定的是。我最不想要的就是一杯吉特汤。

我试图移动这些文件,但是我丢失了提交历史记录,因为git并不真正处理移动或重命名。我确实知道,即使它在日志中显示为一个新文件,仍然可以使用git log中的一些选项查看该文件的提交历史。

据我所读,实现这一目标的最佳方法是使用git-filter。我对shell或git不是很在行,所以有人能告诉我执行上述操作需要什么吗?

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2013-10-19 09:55:07

正确的方法是:

代码语言:javascript
复制
git mv repo.git/webapp/* repo.git/.
git rm repo.git/webapp
git add * 
git commit -m "Folders moved out of webapp directory :-)"
票数 92
EN

Stack Overflow用户

发布于 2014-02-05 15:21:39

Sumeet答案的另一个变体--在上面的"webapp“存储库目录中执行以下命令:

代码语言:javascript
复制
git mv webapp/* ./ -k

-k - 跳过移动或重命名可能导致错误条件的操作,否则将得到:

代码语言:javascript
复制
fatal: not under version control, source=webapp/somefile, destination=somefile
票数 47
EN

Stack Overflow用户

发布于 2017-12-18 16:52:29

通过在目标文件夹中执行以下操作,我就能够让它工作起来:

代码语言:javascript
复制
git mv webapp/* .

在Windows中,*将不工作(如果出现错误Bad source将失败),但是如果您使用Git (它扩展了*通配符),它将在Windows中工作。

如果您正在使用Powershell,您还可以:

代码语言:javascript
复制
git mv (gci webapp/*) .

代码语言:javascript
复制
git mv (get-childItem webapp/*) .
票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7130850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档