【问题标题】:Understanding git: connect branch to a remote repository理解 git:将分支连接到远程存储库
【发布时间】:2012-05-23 08:37:40
【问题描述】:

我在 github 上有一个存储库,比如 testrepo。现在我想建立一个本地存储库repo,它有一个分支origin-master,我希望能够在其中编辑存储库中的内容。

repo/origin-master  <-------->  origin/master

克隆工作正常:

mkdir repo && cd repo && git init 
# not necessary of course:
echo "master" > master && git add master && git ci -m "master"
git remote add origin git@github.com:<username>/testrepo.git
git fetch origin
git branch --set-upstream origin-master origin/master 
git checkout origin-master
# create a new file:
echo "for origin-master" > orig-master && git add orig-master && git ci -m "orig-master"

但是

git push origin 
To git@github.com:<username>/testrepo.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'git@github.com:<username>/testrepo.git'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again.  See the
'Note about fast-forwards' section of 'git push --help' for details.

如何告诉git,如果我想推到origin,我想推本地分支origin-masterorigin/master

【问题讨论】:

  • 显示无效的序列,而不是有效的序列。

标签: git


【解决方案1】:

请参阅 this post 以获得推送到非裸(即带有工作副本)回购的好建议。基本上这里发生的事情是,当您以这种方式推送时,远程仓库不会更新它的工作副本(真实文件),只会更新它的历史记录。然后你需要git reset --hard 来刷新文件,但这很危险,因为你会丢失未提交的修改。

作为一般建议,我会说在处理多个非裸存储库时更喜欢拉而不是推:push to only bare repositories!

【讨论】:

    【解决方案2】:

    我无法理解您尝试设置的工作流程类型,但这有帮助吗?

    How do you make an existing git branch track a remote branch?

    【讨论】:

    • 我已经尝试过了,但是当我推送时,我收到一个错误,请参阅我改写的问题。
    【解决方案3】:

    将默认推送行为设置为上游:

    $ git config push.default upstream
    $ git push origin
    

    git push origingit push origin : 相同,默认推送所有“匹配”的分支。您的 origin-master 分支不匹配,因此它会尝试采用 匹配 的分支 (master) 并将其推送到 origin。

    或者,您可以基于每个远程指定 push refspec:

    $ git config --add remote.origin.push origin-master:master
    $ git push origin
    

    另请参阅git-push examplesgit-config

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-20
      • 2022-11-09
      • 1970-01-01
      • 2011-01-09
      • 2013-02-21
      • 1970-01-01
      • 2020-09-23
      • 2023-03-18
      相关资源
      最近更新 更多