有没有办法设置git存储库,以便git pull
默认为一个远程,并且git push
默认为另一个?我知道我可以通过更改分支部分.git/config
中的remote
变量的值来设置和,但是如何分别为每个方向执行此操作?git pull和git push的不同默认远程(跟踪分支)
回答
对于Git 1.6.4及更高版本,请将remote.<name>.pushurl
设置为git config。
人们可能会使用它来拉动使用只读https:
协议,并推送使用基于SSH的协议。
说origin
的URL(remote.origin.url
)是https://git.example.com/some/repo.git
。它是只读的,但您可以通过基于ssh的“URL”[email protected]:some/repo.git
进行写入访问。运行以下命令,以推动效果通过基于SSH协议:
git config remote.origin.pushurl [email protected]:some/repo.git
从我可以从git config man page聚集,上游回购是:
- 默认原点都
git pull/fetch
和git pull
设置由branch.remote
对于git v1.8.3.2,在尝试git config remote ...和git remote set-url ...答案后,对于单个分支或整个分支,这似乎是真实的回购的副本。 – 2013-08-29 03:13:13
将默认远程设置重置为当前分支的“origin”,并从匹配的分支名称push push/pull到/ from git push --set-upstream origin
由于Git版本1.7.0,可以将此与:
git remote set-url --push origin https://your.push.com/blah/
比问题晚3年,但这应该是新接受的答案! – Kevlar 2013-09-25 20:47:34
@Kevlar为什么?接受用于标记并不总是“最好”的答案,但是为OP制定的答案(阅读FAQ以获取更多信息)。在提出问题的时候,答案是行不通的(甚至不存在),因为git早于1.8。但是接受的答案确实为OP做好了准备。你在三年后改变OP的决定的理由是什么? – trejder 2013-12-06 10:26:53
@trejder Stack Overflow也是一个为未来访问者提供有用答案的地方,他们可以通过搜索引擎或其他方式找到问题。现在最好的答案首先出现是很有价值的。我并不是说OP *必须*改变接受的答案,但是这样做是完全合理的(并且在我看来是净积极的)。 – amalloy 2015-08-20 00:30:21
这个工作在1.7.1及以上 -
git remote set-url --push origin [email protected]:username/somerepo.git
由于Git的1.8.3,您可以使用remote.pushDefault
选项做你想要什么(即具有不同的默认遥控器为pull
和push
)。您可以像其他任何设置一样来设置选项;例如,将其设置为pushTarget
遥控器,使用
git config remote.pushDefault pushTarget
此选项将具有以下效果:
git pull
将拉动从远程指定由在相关分支部remote
选项.git/config
,而git push
将推送到由remote.pushDefault
指定的远程。
请注意,您需要指定名称远程而不是URL。这使得该解决方案比涉及remote.<name>.pushurl
的解决方案更灵活,因为(例如)您仍然会为两个遥控器都追踪分支。无论您是需要还是希望这种灵活性都取决于您。
The release notes表示此选项专门用于支持三角形工作流程。
奇怪:我以为你只是向上游推销,而你不知道有多少下游回购正在从你身上拉下来:请参阅http://stackoverflow.com/a/2749166/6309 – VonC 2015-07-02 19:12:17
@VonC啊,是的,我明白了为什么它很混乱。我通常会调用远程我想*从*默认'上游',因为......呃......它是在我的存储库上游,在这些拉动。但是选项是'pushDefault',而不是'pullDefault',所以我在例子中使用'downstream'作为名称。这可能是一个更好的主意,称为“defaultPushTarget”;) – MvanGeest 2015-07-02 19:28:30
@MvanGeest我同意。但我确认你通常会推向“上游”。有一个(或很少和已知的)上游。但是可能会有很多(和未知的)下游。这就是DVCS(如“分布式”)宇宙。 – VonC 2015-07-02 19:34:30
- 1. git push/pull - 默认为github
- 2. Git跟踪远程分支,并推送到不同的分支
- 3. git:跟踪多个远程分支
- 4. 如何跟踪远程git分支?
- 5. Git-跟踪远程分支机构
- 6. Git安装远程跟踪分支
- 7. git:如何指定一个默认的远程push-to分支?
- 8. Git分支-m和远程跟踪分支
- 9. 确保git远程跟踪分支与远端保持同步
- 10. git默认远程分支与gitolite
- 11. 从错误的远程分支git pull
- 12. 让现有的Git分支跟踪JGit的远程分支?
- 13. 如何让现有的git分支跟踪远程SVN分支?
- 14. 如何将git分支转换为远程跟踪的分支?
- 15. 如何让现有的git分支跟踪远程分支?
- 16. 从远程分支的pull rebase是不同的git fetch + rebase
- 17. 跟踪Git上的分支?
- 18. 了解git pull和git fetch
- 19. Git推不工作,但git pull在远程分支上
- 20. git远程跟踪分支推新分支
- 21. git push NOT当前分支到远程
- 22. git pull会影响远程追踪分支吗?
- 23. git - 不能做一个远程跟踪分支
- 24. git push和git pull有什么区别?
- 25. git pull当前追踪分支
- 26. 使用git自动跟踪远程分支
- 27. 'git pull'的默认行为
- 28. xcode git pull/push crash
- 29. git merge,push,pull confusion
- 30. git submodule commit/push/pull
如何推送到say'开发“分支并从同一个远程+裸Git仓库中的'生产'分支拉来? – Ninad 2015-07-23 12:36:20