V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
click
V2EX  ›  问与答

新手请教:Git 里面的 origin 到底代表啥意思?

  •  
  •   click · 2014-10-03 15:33:30 +08:00 · 22942 次点击
    这是一个创建于 3689 天前的主题,其中的信息可能已经有所发展或是发生改变。
    本地代码仓名称:cangku
    在本地创建一个分支:cangku1
    然后我想把这个分支推送到远端,查看语法是git push origin master
    我以为origin代表代码仓名称,所以Bash执行:
    git push cangku cangku1
    没成功,提示fatal: 'cangku' does not appear to be a git repository
    换成git push cangku1 cangku1也不行
    最后改执行:
    git push origin cangku1
    成功。

    现在有点凌乱了,我一直以为origin是表示代码仓名称,以前遇到origin 替换成代码仓名称也没出错,为何在这里就不行了?
    15 条回复    2014-10-03 20:57:12 +08:00
    surftheair
        1
    surftheair  
       2014-10-03 15:38:04 +08:00
    root?
    messense
        2
    messense  
       2014-10-03 15:41:39 +08:00
    origin 是 remote 名,git remote 可以看看有哪些 remote,git remote add 可以添加 remote...
    skydiver
        3
    skydiver  
       2014-10-03 15:42:15 +08:00
    git remote -v
    看一下列出来的仓库名称是啥。
    chemzqm
        4
    chemzqm  
       2014-10-03 15:43:51 +08:00
    git remote -v 查看所有的远程仓库,没有 cangku 的话要先添加
    sanddudu
        5
    sanddudu  
       2014-10-03 15:44:17 +08:00   ❤️ 1
    origin 是默认的远程版本库名称
    你可以在 .git/config 之中进行修改

    事实上 git push origin master 的意思是 git push origin master:master (将本地的 master 分支推送至远端的 master 分支,如果没有就新建一个)
    click
        6
    click  
    OP
       2014-10-03 15:48:00 +08:00
    click
        7
    click  
    OP
       2014-10-03 15:51:54 +08:00
    @sanddudu 那origin是否能替换成远程版本库名称?
    sanddudu
        8
    sanddudu  
       2014-10-03 16:01:20 +08:00
    @click 这个是默认代替所有版本库名词的
    换掉了你也不好记,推荐还是保留着,记得工作目录就好了
    alsotang
        9
    alsotang  
       2014-10-03 16:31:58 +08:00
    远端 repo 的默认约定命名而已。技术上说,没有特殊意义。
    jacob
        10
    jacob  
       2014-10-03 17:11:10 +08:00
    @click 能啊

    origin是git的config里定义的,远端服务器名(我理解的),比如config是这样定义的

    [remote "origin"]
    url = https://github.com/sample/sample_app.git
    fetch = +refs/heads/*:refs/remotes/origin/*
    [branch "master"]
    remote = origin
    merge = refs/heads/master
    [remote "heroku"]
    url = [email protected]:sample.git
    fetch = +refs/heads/*:refs/remotes/heroku/*

    --------------

    git push origin master //推送到github
    git push heroku // 推送到heroku
    julyclyde
        11
    julyclyde  
       2014-10-03 17:53:48 +08:00
    clone回来的working copy才有origin,否则就需要手工设置
    julyclyde
        12
    julyclyde  
       2014-10-03 17:54:23 +08:00
    @click 名称不具备远程意义。远程只有URL
    konakona
        13
    konakona  
       2014-10-03 17:55:12 +08:00
    前几天帮同事在windows下配GIT,由于我很早前就弄了其他版本所以不是orgin了。但每次都忘记(windows下是用小乌龟),要改也忘了怎么改=,,= 到OSX下又会了,真是的……
    xpol
        14
    xpol  
       2014-10-03 20:38:41 +08:00
    试试 SourceTree 看看合不合你口味:

    * Windows / Mac 通用
    * 支持 Git 和 Mercurial
    * 启动慢,尤其是Windows下

    http://www.sourcetreeapp.com
    rming
        15
    rming  
       2014-10-03 20:57:12 +08:00
    @xpol 没有linux版,虽然我不需要,但我一直耿耿于怀= =
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5390 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 08:55 · PVG 16:55 · LAX 00:55 · JFK 03:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.