2015-10-15 134 views
0

从父目录我想切换所有子目录的分支。有这个命令吗?交换子目录分支

ParentDirectory 
- Sub1 
- Sub2 
- Sub3 

cd Sub1 
git checkout f1 
cd .. 
cd Sub2 
git checkout f1 
cd .. 
cd Sub3 
git checkout f1 
cd .. 
+2

等等,什么?你的每个目录都有一个Git仓库? – Makoto

+0

你真的应该提供更多的细节,因为问题本身是非常含糊的:你真的在每个子目录中有单独的*不相交* Git仓库吗?或者你有* submodules?*或者它可能是一个单一的存储库,但你正在寻找像切换subtire的一个分支的东西*就像你会在Subversion中做的那样?*你看,有太多的猜测,所以人们感到困惑,在评论中开始战斗等。请准确。 – kostix

回答

0

如果你如果您使用在cmd窗口使用bash,从顶层目录

for d in */ ; do 
    git checkout "$d" 
done 

For /D %G IN (*) do git checkout %G 
+0

你在技术上不是错误的,但事实上,这似乎是一个Git仓库的非典型使我相信,这里有一些其他*错误。 – Makoto

+0

@Makoto你能否停下来投下我投稿的一切?特别是如果你同意这是技术上正确的。 如果你有多个git仓库,比如说在一个eclipse工作区中,并且你想一次切换所有的仓库,这将是一个非常有效的用例,我的解决方案也可以工作。 – Sammy

+0

不,不一定......如果它们是真正的子模块,你可能会想要使用基于子模块的命令......再次,我说你在技术上是正确的(至少在机械意义上),但我仍然感觉这不是解决实际问题*的正确方案。 – Makoto

0

如果你的子文件夹都submodules,则您可以使用git submodule foreach(如果子模块包含子模块,则甚至可以使用git submodule foreach --recursive

git submodule foreach git checkout -b newBranch