【问题标题】:I can clone repo and pull, but I can't push我可以克隆 repo 并拉取,但我不能推送
【发布时间】:2017-12-21 23:19:04
【问题描述】:

我正在尝试将更改推送到远程仓库,但由于某种原因我不能。

当我git branch 这是我看到的:

develop
feature/all_features
* feature/Tommaso

当我git status

On branch feature/Tommaso
nothing to commit, working directory clean

我可以 clone repo 和 pull 来自开发,但是当我这样做时 git pull 这就是我得到的:

There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details.
git pull <remote> <branch>
If you wish to set tracking information for this branch you can do so with:
git branch --set-upstream-to=origin/<branch> feature/Tommaso

我猜问题是远程仓库没有我在本地创建的当前分支。

编辑:我不够清楚:我想在 feature/allfeatures 中创建分支 feature/Tommaso 。我这样说是为了那些可能认为我正在尝试创建develop 的分支的人

是这样吗?我该如何解决?

如果您需要其他信息来解决问题,请告诉我。提前谢谢你

【问题讨论】:

  • 您首先要查看的是使用 git pull origin branch_name 指定要从中提取的分支。这是您问题的解决方案
  • 谢谢!让我确定一下:如果我希望 feature/Tommaso 成为 feature/allfeatures 的一个分支,这样做是否足够: git pull origin feature/allfeatures ?在此之后它问我:将name_of_repository 的分支'feature/allfeatures' 合并到 feature/Tommaso,这是正确的吗?请回答,我接受你的评论:)

标签: git github push


【解决方案1】:

如果您正在使用分支,那么您必须与远程保持相同的分支以保持一致。假设如果您在远程 repo 上有一个名为 foo 的分支,那么您还必须在本地保留一个分支名称 foo。

你是怎么做到的。假设你的本地仓库中没有名为 foo 的分支,所以你这样做了

$ git fetch

它将获取远程所有分支的信息到您的本地,这可以从该命令的输出中清除。

然后你做一个git branch 看看有哪些可用的分支。现在您将能够在本地看到分支 foo。执行git checkout -b foo 这会将您的分支切换到 foo。使用git log 来查看你有最新的远程分支,否则使用git pull origin foo。现在您可以使用git push origin foo

您评论中提到的日志表明您正在尝试从不同的分支中提取并与本地 repo 中的其他分支一起工作。在开始工作之前切换分支,否则您将在合并冲突中运行并弄乱 repo

【讨论】:

  • 谢谢:我对幕后发生的事情有了更清晰的认识。我会查看其他答案谢谢
  • 很高兴为您提供帮助。在接受任何答案之前花点时间理解
【解决方案2】:

试试下面的命令。

$ git pull origin <branch_name>

$ git push origin HEAD:refs/for/<branch_name>

如果您想创建自己的集成分支。

$ git checkout -b <integration branch name> origin/<origin branch name>

$ git push origin <integration branch name>

【讨论】:

  • 谢谢,我会接受每个人的回答,因为我的问题在于对本地和远程树没有清晰的概念,没有写入权限,然后我需要在另一个分支中创建一个分支.谢谢大家
【解决方案3】:

正如其他人已经说过的那样,没有名为

的分支

使用此代码

git push origin &lt;your branch name&gt;

编辑

你已经完成了吗?

git remote set-url origin https://github.com/MyRepo/project.git

【讨论】:

  • 好的,你能检查一下你的授权吗?可能存在您只有读取权限的情况。
  • 我的意思是你使用的哪个仓库是私有的?你从别人那里获得了访问权?然后再次确认您是否有写入身份验证。
  • 我的仓库中有这个 .gitconfig [remote "origin"] url = github.com/MyRepo/project.git fetch = +refs/heads/*:refs/remotes/origin/* [branch "master"] remote = origin merge = refs/heads/master 我可以很好地克隆但仍然无法推送,可能是什么问题?
【解决方案4】:

我猜问题是远程仓库没有我在本地创建的当前分支

我也认为这是问题所在。首先,push 您当前的分支带有-u 标志(设置上游),然后尝试git pull

$ git push -u origin HEAD

注意: -u = --set-upstream 告诉 Git 记住参数,以便下次我们可以简单地运行 git pullgit push

当你只运行 git pull 而不提及分支名称时,git 会尝试从跟踪远程分支中提取。

$ git pull

如果你想拉另一个远程分支,那么只需提及分支名称。

$ git pull origin <branch-name>

如果你想从feature/allfeatures 中创建一个新的分支feature/Tommaso,请关注:

$ git checkout feature/allfeatures
$ git checkout -b feature/Tommaso
$ git push origin HEAD

现在,feature/allfeaturesfeature/Tommaso 具有相同的更改/提交。

【讨论】:

  • 感谢您的回答:只是为了检查一下,您看到编辑了吗?我想通过编辑答案是: git pull origin feature/allfeatures 然后 git push -u origin feature/Tommaso?
  • “我想在 feature/allfeatures 中创建分支功能/Tommaso”,不清楚你到底想要什么。你能解释一下吗?
  • 我有大师级的开发。从开发中,我们有一个名为 feature/allfeatures 的分支,我们正在处理它,在这里我想创建一个名为 feature/Tommaso 的分支
  • 我不建议在分支名称中使用 / 但你可以这样做 git checkout -b feature-Tommaso
  • 如果你想要一个来自 feature/allfeatures 的新分支 feature/Tommaso,请关注:git checkout feature/allfeaturesgit checkout -b ffeature/Tommaso。现在,feature/allfeaturesfeature/Tommaso 具有相同的更改/提交。
【解决方案5】:

如果你对 repo 有读但没有写权限,你可能会遇到这种情况。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-23
    • 2021-11-29
    • 2023-03-04
    • 2021-09-13
    • 2011-10-17
    • 2016-11-13
    • 1970-01-01
    相关资源
    最近更新 更多