[英]How to set default push repository in Git?
如何从git@source.com:...
进行git pull
git@source.com:...
存储库和git push
to git@target.com:...
默认情况下存储库?
在Mercurial中,我使用以下内容创建.hg/hgrc
:
[paths]
default = ssh://hg@source.com/...
default-push = ssh://hg@target.com/...
在Git中设置相同默认行为的方法是什么?
它在git中几乎相同。 每个存储库都有一个.git/config
文件,其中应该包含以下内容:
[remote "origin"]
url = git://path/to/your/repo
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
您不必手动添加,有很多命令可以帮助您。 一个好的开始是Git SCM Book 。
要设置默认的前一个分支,您只需键入: git branch --set-upstream-to YOUR_REMOTE_NAME/YOUR_BRANCH_NAME
(使用git> = 1.8.0时)
在git中,遥控器位于[remote "<name>"]
部分。 当您克隆某些东西时,初始遥控器是origin
,因此通常是要使用的遥控器。 获取URL是url
,推送URL是pushurl
。 您还需要一个fetch
行(或几行)来引入分支名称。
通常情况下,您会在.git/config
看到类似的内容:
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = ssh://...
将url更改为git://source
并添加pushurl = git://target
(您可以使用git config
命令或git remote
执行此操作,或者只需运行git config -e
以在文件上显示常规编辑器)。
分支需要有一个“上游”集(分为remote
和merge
两部分),以使它们“跟踪”“远程分支”。 通常,由于远程命名为origin
设置branch.master.remote
到origin
和branch.master.merge
到master
,例如。 (当您基于远程分支创建本地分支时,在任何甚至略微现代版本的git中,它都会将其设置为“跟踪”。)
通常,您还应将push.default
配置为git 1.x默认值以外的值; simple
可能是避免事故的最佳选择。
请注意,如果您习惯使用Mercurial,则hg pull
与git fetch
最相似,而不是git pull
; hg pull -u
有点接近git pull
,但我建议你自己训练使用git fetch
而不是git pull
(即使你不习惯Mercurial,实际上:-))。 它还需要调整hg和git处理分支的不同方式(hg为分支提供一个全局名称空间,另一个用于书签的全局名称空间; git具有每个远程“远程分支”名称空间,而本地分支更多像hg本地书签。)
我结合@torek,@ klaustopher的提示(感谢答案)和来自@Mali的重复链接,让Mercurial背景的人们更容易找到答案。
要在Git中添加default-push
,请使用:
$ git config remote.origin.pushurl git@github.com:yourname/project.git
要检查当前设置:
$ git remote -v
origin git@github.com:user/project.git (fetch)
origin git@github.com:yourname/project.git (push)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.