Git:切换到另一个分支后如何忽略分支的新子模块?

时间:2014-09-16 10:26:42

标签: git

我正在与三个分支机构合作

master
develop
feature-new-theme

feature-new-theme是开发的一个分支。

feature-new-theme我已在bootswatch目录中添加了一个名为protected/vendor/bootswatch的新git子模块。

直到今天一切都好。

我做了一个'冻结提交&#39 ;:使用消息feature-new-theme提交'freeze'上的所有文件和子目录。因此,我没有任何未跟踪的内容,也没有改变任何提交。

然后我创建了一个分支master的修补程序分支。

git checkout master
git checkout -b hotfix-1.35.3 master

当我执行git status时,我看到protected/vendor/bootswatch未跟踪。为什么?!

所以我使用此内容<{1}}创建了一个.gitignore文件

protected/vendor

我已将bootswatch/ 提交到.gitignore,但我仍然看到未跟踪的目录执行hotfix

git status

为什么呢?如何以正确的git方式从没有子模块的分支切换到另一个分支?

编辑以回复常见问题:

  • git status # On branch hotfix-1.35.5 # Untracked files: # (use "git add <file>..." to include in what will be committed) # # protected/vendor/bootswatch/ 从未合并到feature-new-theme,因为新功能只会合并到master,并且只有在发布阶段我们才会创建develop分支,版本,执行小修补,然后将release-x.y.z分支合并到release-x.y.z并导入master
  • 新的子模块目录在developmaster分支上都未跟踪

1 个答案:

答案 0 :(得分:2)

好吧,因为masterhotfix不需要,您可以轻松删除它。

它不会影响您的feature-new-theme分支(如果您在结账后submodule init/update),它将清理您当前的回购状态。

当然,它不是&#34;最好的可能方式&#34;,因为它需要做非git的东西。当然,您也可以尝试使用git clean

您可以在互联网上找到有关此行为的投诉,例如herehere

此链接提供了一些信息:git clean is not removing a submodule added to a branch when switching branches

所以git clean的方式是:

git clean -f -f -d