繁体   English   中英

如何在Git中设置默认推送存储库?

[英]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以在文件上显示常规编辑器)。

分支需要有一个“上游”集(分为remotemerge两部分),以使它们“跟踪”“远程分支”。 通常,由于远程命名为origin设置branch.master.remoteoriginbranch.master.mergemaster ,例如。 (当您基于远程分支创建本地分支时,在任何甚至略微现代版本的git中,它都会将其设置为“跟踪”。)

通常,您还应将push.default配置为git 1.x默认值以外的值; simple可能是避免事故的最佳选择。

请注意,如果您习惯使用Mercurial,则hg pullgit 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM