如何强制git始终使用master分支?

sud*_*udo 2 git branch clone master

我有一些Xcode项目我试图使用git从GitHub克隆,它也有外部子模块.每当我尝试克隆时,它会继续将这些外部子模块以及项目中的每个文件夹放在"(无分支)"而不是主文件上.这就是我在终端做的事情:

git clone git@github.com:******.git
cd ******
git submodule update --init
cd External/******
git submodule update --init
cd External/******
git submodule update --init
Run Code Online (Sandbox Code Playgroud)

如果我进入任何文件夹并执行git分支,我得到这个:

git branch
* (no branch)
master
Run Code Online (Sandbox Code Playgroud)

有没有办法可以强制git clone在任何地方使用master分支?

Von*_*onC 11

这需要git 1.8.2或更高版本(2013年3月)

这取决于如何在以下方面声明这些子模块.gitmodules:

参见" git submodule tracking latest "

这将允许您遵循主分支.
用以下内容更新您的当前.gitmodules:

git config -f .gitmodules submodule.<path>.branch master
git submodule update --remote --recursive
Run Code Online (Sandbox Code Playgroud)

请注意,子模块仍然不在任何分支上.只需他们的SHA1就是其中之一origin/master.
你仍然需要checkout master为他们每个人.

git submodule foreach --recursive git checkout master
Run Code Online (Sandbox Code Playgroud)