错误:src refspec与any不匹配

typ*_*pos 6 git github

我和GitLab的一些朋友有一个项目,当然还有主分支,还有其他一些.当我克隆存储库时,我也用命令创建了一个上游git remote add upstream ....

然后,我发出了git fetch upstream.其次是git checkout upstream/test1.现在,如果我输入git branch -a,我得到这样的输出:

* (HEAD detached at upstream/test1)
  master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
  remotes/upstream/test1
  remotes/upstream/master
Run Code Online (Sandbox Code Playgroud)

这一切都很好,但后来我对我的upstream/test1分支中的代码做了一些更改,我想将它们推送到origin/test1存储库,我在标题上收到错误消息.请注意,我按照以下步骤推送:

git add .
git commit -m "Sample message"
git push -u origin test1
Run Code Online (Sandbox Code Playgroud)

如果我发出git show-ref,我得到以下输出:

refs/heads/master
refs/remotes/origin/HEAD
refs/remotes/origin/master
refs/remotes/upstream/test1
refs/remotes/upstream/master
Run Code Online (Sandbox Code Playgroud)

我检查了以下问题,但没有发现它有用.任何想法如何解决?

lar*_*sks 9

您似乎没有名为test1. 您有一个与远程关联的远程分支。test1upstream

您不应该upstream/test1直接编辑分支。事实上,尝试检查应该会产生警告:

$ git checkout upstream/test1

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.
Run Code Online (Sandbox Code Playgroud)

您应该首先检查一个跟踪远程分支的本地分支,它应该是这样的:

$ git checkout test1
Branch test1 set up to track remote branch test1 from upstream by rebasing.
Switched to a new branch 'test1'
Run Code Online (Sandbox Code Playgroud)

执行此操作后,未装饰的git push将推送到upstream遥控器,同时git push origin test1推送到您的origin遥控器。在-u那里添加标志将切换跟踪分支,以便upstream/test1您的分支将跟踪而不是跟踪origin/test1,因此默认情况下,未来git pullgit push操作将引用该远程分支 ( origin/test1)。


小智 5

下面将在本地和远程创建一个新分支。当我创建一个新的分支来使用时,我会遵循这个。

git结帐大师

git pull 原点大师

git checkout -b你的分支

进行新的更改

git push -u origin你的分支