理解git:将分支连接到远程存储库

理解git:将分支连接到远程存储库,git,Git,我在github上有一个存储库,比如testrepo。现在我想建立一个本地存储库repo,它有一个分支originmaster,在那里我可以编辑存储库中的内容 repo/origin-master <--------> origin/master repo/origin master origin/master 克隆技术可以很好地工作: mkdir repo && cd repo && git init # not necessary of

我在github上有一个存储库,比如testrepo。现在我想建立一个本地存储库
repo
,它有一个分支
originmaster
,在那里我可以编辑存储库中的内容

repo/origin-master  <-------->  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"
mkdir repo&&cd repo&&git init
#当然没有必要:
echo“master”>master&&git添加master&&git ci-m“master”
git远程添加源git@github.com:/testrepo.git
git获取源
git分支——设置上游原点主原点/主原点
git签出源主机
#创建新文件:
echo“对于原始主机”>原始主机和git添加原始主机和git ci-m“原始主机”
但是

git推送原点
到git@github.com:/testrepo.git
! [已拒绝]主机->主机(非快进)
错误:无法将某些引用推送到'git@github.com:/testrepo.git'
为防止丢失历史记录,拒绝了非快进更新
在再次按下之前,合并远程更改(例如“git pull”)。见
有关详细信息,请参阅“git推送--帮助”的“关于快进的注意”部分。
我如何告诉git,如果我想推送至原始,我想将本地分支机构
原始主机
推送至
原始主机

有关推送至非裸(即具有工作副本)回购的良好建议,请参阅。基本上,这里发生的事情是,当你以这种方式推动时,远程回购不会更新它的工作副本(真实文件),只会更新它的历史。然后需要对其执行
git reset--hard
刷新文件,但这很危险,因为会丢失未提交的修改


作为一个一般性的建议,在处理多个非裸存储库时,我更愿意使用pull而不是push:

我在理解您试图设置的工作流类型时遇到问题,但这会有帮助吗


“”

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

$ git config push.default upstream
$ git push origin
git-push-origin
git-push-origin:
相同,默认情况下会推送所有“匹配”分支。您的源主机分支不匹配,因此它尝试获取匹配的分支(
master
)并将其推送到源主机

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

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

另请参见和。

显示不起作用的序列,而不是起作用的序列。我已经尝试过了,但当我按下时,出现错误,请参见我重新编写的问题。
$ git config --add remote.origin.push origin-master:master
$ git push origin