git - 如何在文件夹层次结构中将所有 git 内容向上移动一级?

标签 git directory

我有一个 git 存储库,其结构如下所示:

+--repo.git
|
+----+bootstrap.py
+----+buildout.cfg
+----+.gitignore
+----+webapp
|
+---------+manage.py
+---------+modules
+---------+templates
+---------+static
+---------+...
+---------+...

我想将 webapp 文件夹的内容上移一层。我得到的 repo 应该是这样的:

+--repo.git
|
+----+bootstrap.py
+----+buildout.cfg
+----+.gitignore
+----+manage.py
+----+modules
+----+templates
+----+static
+----+...
+----+...

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

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


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

根据我的阅读,完成此操作的最佳方法是使用 git-filter。我对 shell 或 git 不是很好所以有人可以告诉我我需要执行什么来完成上述操作。

最佳答案

正确的做法是:

git mv repo.git/webapp/* repo.git/.
git rm repo.git/webapp
git add * 
git commit -m "Folders moved out of webapp directory :-)"

关于git - 如何在文件夹层次结构中将所有 git 内容向上移动一级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7130850/

相关文章:

perl - 打开位于同一目录中的文件时出错

c# - 如何将 List<System.IO.FileInfo> 的类型转换为 List<string>?

iphone - NSFileManager createDirectoryAtPath EXC_BAD_ACCESS

git - 在一行中放弃更改

git - 更改以前提交的 git 电子邮件

git - 从 Git LFS 取消跟踪文件以允许我推送到 GitHub 服务器

ruby - Rspec 不告诉我它的

java - 创建目录树

c# - 如何以编程方式启用\禁用 ToolStripMenuItem 中的嵌套子菜单项?

git - 计算一个 git 分支与 master 有多少不同?