当我克隆我的项目时,我希望它已经被配置为只推送到相应的远程分支到我检查过的任何本地分支。
我有两个本地分支:开发和掌握,以及两个相应的遥控器:遥控器/原点/开发和遥控器/原点/主人。
我知道如果我结帐开发并设置" remote.origin.push" to" HEAD:refs / for / develop"然后我的变化去了正确的地方。但是如果我检查出master,它仍然会想要推送到远程开发分支。
提前致谢。
答案 0 :(得分:0)
编辑以添加TL; DR键回答:您可能正在寻找push.default
,您应该git config --global
对下面列出的三种设置中的任何一种最适合您。见粗体。
根据git config documentation,您可以将branch.name.remote
设置为远程名称,并branch.name.pushremote
覆盖其他默认值。如果您只是写push.default
,您还可以git push
来控制推送哪些分支;和remote.pushdefault
(覆盖其中一个特定于分支的但不覆盖另一个)。您也可以设置remote.remotename.push
以提供默认的参考规范。
诚然,这是一团糟。但是设置确实存在,它处理部分(1)(虽然不仅仅是remote.origin.push
,您需要使用特定于分支的设置)。
第(2)部分,在git clone
上自动发生这种情况是不可能的:这些配置项不是存储库的一部分。你可以用两种方式中的一种(或两种)相当接近:
在您的(--global
)git配置文件中为 you 设置这些:然后它们将应用于所有存储库,而不仅仅是这个和克隆。在某些情况下这可能是可以接受的,但显然不是全部。 但是,您可能做想要全局设置push.default
,current
,upstream
或simple
(请参阅文件)。
在您正在克隆的存储库中,提供一个调用git config
来设置所有这些设置的脚本。然后你需要记住在每次新克隆之后运行脚本,但至少每个存储库都要设置它。