Git将本地分支推送到远程分支的分支

时间:2018-11-02 22:27:55

标签: git push branch

我有带有2个分支的远程存储库,分别是 master 登录。我想将本地更改推送到登录分支,但是它不起作用。

$ git push origin/login

fatal: 'origin/login' does not appear to be a git repository
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

它说'origin / login'似乎不是一个git仓库,但是我有。我怎么了?

$ git log

commit f385d950a1f8c6412d91b26d749282d1a3ead27a (HEAD -> upstream, login, develop)
Author: SoojungChae <naan_ace@naver.com>
Date:   Sat Nov 3 06:49:16 2018 +0900

    Edit login logic

commit 6719685fbc7f895a909e2515753c02794591595e (origin/login)
Author: SoojungChae <naan_ace@naver.com>
Date:   Sat Sep 22 23:43:57 2018 +0900

    Block unnecessary things

...

2 个答案:

答案 0 :(得分:1)

git push需要另外两个 个参数:

  • 远程的名称,例如origin
  • 分支 的名称,例如masterlogin

也就是说,您想要

git push origin login

将这两个概念分开是很重要的:像origin这样的 remote 是您和Git用来跟踪诸如https://github.com/some/repo.git这样的长名称的简称。 ssh://git@github.com/some/repo.git,与分支名称完全不同。

造成这种混乱的原因是,除了这些概念和术语( remote branch )外,还有第三个概念,由另一个单词序列描述,通常写为远程跟踪分支 1 第三个概念涉及origin/masterorigin/login形式的字符串。关于什么时候应该写origin login和什么时候应该写origin/login,这会变得很混乱。

诀窍是查阅文档,并密切跟踪其说明 remote 还是 branch 。不幸的是,文档没有使用这两个术语,因为它们实际上是更一般形式的特殊情况。因此文档(现在是Git 2.19 2 )说:

  

git push [--all | --mirror | --tags [--follow-tags] [--atomic] [-n | --dry-run] [--receive-pack=<git-receive-pack>]                     [--repo=<repository>] [-f | --force | [-d | --delete] [--prune] [-v | --verbose]                     [-u | --set-upstream | [-o <string> | --push-option=<string>]                     [-- [no-] signed | --signed=true | false | if-asked)]                     [--force-with-lease [=<refname> [:<expect>]]]                     [--no-verify] [<repository> [<refspec>...]]

和我在这里谈论的两个参数分别是 repository refspec ,而不是 remote 分支。作为一个初学者,如何解决所有这些问题还不清楚。

(这是一种长篇大论的说法,即Git文档不是很好。)


1 我现在更喜欢术语远程跟踪名称,因为尽管它具有分支名称方面的 some ,但它也具有有一些不同的地方。无论哪种方式,第三个概念都采用上面显示的形式。

2 较旧的git push版本具有较少的可选参数。

答案 1 :(得分:0)

您似乎在使用错误的语法进行推送。 git push将URL,路径或远程作为其第一个参数,然后在其后进行分支。因此,如果要将当前的git push origin login分支推送到login上的login分支,则需要输入origin