我知道这个问题在SO中已经讨论了很多。但请耐心等待。
我的大四学生创建了一个名为mav921
的分支,我被指示签出该分支并进行工作
所以我做的是git checkout -b local-mav921 origin/mav921
,
它奏效了。
当我在local-mav921
分支完成任务时,我想推送它,所以我做了
git add .
git commit -m "message"
但承诺说:
Your branch is ahead of 'origin/mav921' by 1 commit.
(use "git push" to publish your local commits)
Changes not staged for commit:
... all the files that I was working.
基本上,发生的事情是在运行add & commit
之后,它没有提交我的工作。
所以,我试着按照错误消息推送:git push
,它说:
fatal: The upstream branch of your current branch does not match
the name of your current branch. To push to the upstream branch
on the remote, use
git push origin HEAD:mav921
To push to the branch of the same name on the remote, use
git push origin HEAD
运行git branch -a
:时
Mav921
mav921
* local-mav921
master
remotes/origin/mav921
remotes/origin/master
您可以注意到我有Mav921
(不要介意,因为我是从master创建的(
。还有mav921
(这是因为我从远程签出了一个,而没有创建基于该分支的新分支(。最后,local-mav921
(运行gitcheckout -b local-mav921 origin/mav921
的结果(
老实说,我不知道如何解决这个问题。如果有人能告诉我发生了什么以及如何解决这个问题,那就太好了。
所以我所做的是
git checkout -b local-mav921 origin/mav921
所以现在您的本地分支与它跟踪的远程分支有不同的名称。这很不寻常,但既不违法也不致命。但这确实意味着某些Git快捷方式命令不起作用。
基本上,发生的事情是在运行add&承诺,它没有承诺我的工作。
是的。它很好地完成了你的工作。这就是为什么你领先于遥控器;你做出了新的承诺。
我试图根据错误消息推送:
git push
,它说:致命:当前分支的上游分支不匹配您当前分支机构的名称
确实如此。正如我一开始所说,你做了一件不同寻常的事。您的本地和远程分支名称不匹配。这意味着像简单的git push
这样的快捷方式不起作用。因此,你必须给出完整的命令。但这没有问题!这很容易。信息告诉你该怎么做:
git push origin HEAD:mav921
那就这么做吧。