如何取消嵌套 git 个文件夹?
How do I unnest git folders?
如何 "unnest" git 文件夹?
我有一个组件,已上传到 GitLab。我想将该代码的一部分包含到一个全新的 GitLab 存储库中。
当我将 /code/ 文件夹包含到新的 Git 存储库中时,它告诉我该文件夹处于 Nested Root
状态。我正在使用 SmartGit,它似乎显示文件的捆绑包,而不是单个文件夹和文件。
当我尝试使用 SmartGit 将它添加到 GitLab 时,它想要为我的原始组件创建一个子模块,该组件也在 GitLab 中。我真的不想 link 它介于当前 /cleanRepo/
和任何 /existingRepo/
之间。我知道 SVN 曾经有很多隐藏的 .properties 文件。 Git 似乎也有。所以我可能需要让它忘记所有以前的回购 Git 信息。
背景故事/原因:我想在我所有的全新组件中重复使用一些已完成组件的代码,我想在未来构建这些组件。每当我克隆一个新的存储库并想要构建一个新组件时,我不想将一个完全构建的组件的代码复制并粘贴到一个新文件夹中。我不想每次创建新组件时都必须删除该新组件中不应包含的内容。所以我想创建一个干净的存储库,其中包含起始代码的主副本。假设它包含 1/3 的完整组件代码。我要将那个 clean/master 代码文件夹复制到每个新的 Git 存储库文件夹中。然后我将进入我的新组件的文件夹以扩展该文件夹中复制的代码。这将成为构建新组件的一种非常干净的千篇一律的方法,我可以避免删除过多的文件和编辑多个文件,从而删除大量代码。
理想示例:
cd /cleanRepo/code/
cp -R ./* ~/someNewFolder
cd ~/someNewFolder
^-- start editing that code, but don't edit any /cleanRepo/code/
有"unnest" git 文件夹的简便方法吗?我想查看我想要包含的文件夹和文件列表。不是 "Nested Root" 捆绑包。
是的,有一种简单的方法可以做到这一点!我是在喝完第二杯咖啡后才弄明白的。使用这些命令将允许所有文件在 SmartGit 中显示为展开的文件列表。然后它们可以被单独包含,而不是被捆绑为一个 Nested Root
子模块。
cd /cleanRepo/code/
ls -a
rm -rf .git*
find . -exec touch {} \;
因此,如果其他人遇到此问题,这就是解决方法。
顺便说一句,使用 ls -a
显示隐藏文件列表:
.
..
.editorconfig
.eslintignore
.eslintrc
.git
.gitattributes
.gitignore
.gitlab-ci.yml
.npmignore
请确保您不使用 rm -rf *.*
,因为它会强制并静默删除所有内容!
关于这些文件,我注意到一件事。在某些文件夹中,我必须进入它们并执行以下操作,才能让子文件夹出现在 SmartGit 中:
cd /subfolder/
touch abc
rm abc
这允许带有子文件夹的文件显示为单独的文件。
我添加了一种方法来自动执行该子目录遍历和接触过程,而无需为其编写脚本。就是上面的 find . -exec touch {} \;
行。如果这对你不起作用,那么进入一个子文件夹,触摸一个文件(或创建一个新文件 + 删除它)然后文件就会出现!
如何 "unnest" git 文件夹?
我有一个组件,已上传到 GitLab。我想将该代码的一部分包含到一个全新的 GitLab 存储库中。
当我将 /code/ 文件夹包含到新的 Git 存储库中时,它告诉我该文件夹处于 Nested Root
状态。我正在使用 SmartGit,它似乎显示文件的捆绑包,而不是单个文件夹和文件。
当我尝试使用 SmartGit 将它添加到 GitLab 时,它想要为我的原始组件创建一个子模块,该组件也在 GitLab 中。我真的不想 link 它介于当前 /cleanRepo/
和任何 /existingRepo/
之间。我知道 SVN 曾经有很多隐藏的 .properties 文件。 Git 似乎也有。所以我可能需要让它忘记所有以前的回购 Git 信息。
背景故事/原因:我想在我所有的全新组件中重复使用一些已完成组件的代码,我想在未来构建这些组件。每当我克隆一个新的存储库并想要构建一个新组件时,我不想将一个完全构建的组件的代码复制并粘贴到一个新文件夹中。我不想每次创建新组件时都必须删除该新组件中不应包含的内容。所以我想创建一个干净的存储库,其中包含起始代码的主副本。假设它包含 1/3 的完整组件代码。我要将那个 clean/master 代码文件夹复制到每个新的 Git 存储库文件夹中。然后我将进入我的新组件的文件夹以扩展该文件夹中复制的代码。这将成为构建新组件的一种非常干净的千篇一律的方法,我可以避免删除过多的文件和编辑多个文件,从而删除大量代码。
理想示例:
cd /cleanRepo/code/
cp -R ./* ~/someNewFolder
cd ~/someNewFolder
^-- start editing that code, but don't edit any /cleanRepo/code/
有"unnest" git 文件夹的简便方法吗?我想查看我想要包含的文件夹和文件列表。不是 "Nested Root" 捆绑包。
是的,有一种简单的方法可以做到这一点!我是在喝完第二杯咖啡后才弄明白的。使用这些命令将允许所有文件在 SmartGit 中显示为展开的文件列表。然后它们可以被单独包含,而不是被捆绑为一个 Nested Root
子模块。
cd /cleanRepo/code/
ls -a
rm -rf .git*
find . -exec touch {} \;
因此,如果其他人遇到此问题,这就是解决方法。
顺便说一句,使用 ls -a
显示隐藏文件列表:
.
..
.editorconfig
.eslintignore
.eslintrc
.git
.gitattributes
.gitignore
.gitlab-ci.yml
.npmignore
请确保您不使用 rm -rf *.*
,因为它会强制并静默删除所有内容!
关于这些文件,我注意到一件事。在某些文件夹中,我必须进入它们并执行以下操作,才能让子文件夹出现在 SmartGit 中:
cd /subfolder/
touch abc
rm abc
这允许带有子文件夹的文件显示为单独的文件。
我添加了一种方法来自动执行该子目录遍历和接触过程,而无需为其编写脚本。就是上面的 find . -exec touch {} \;
行。如果这对你不起作用,那么进入一个子文件夹,触摸一个文件(或创建一个新文件 + 删除它)然后文件就会出现!