[英]Git push local branch to remote branch's branch
我有2個分支的遠程存儲庫,分別是master和login 。 我想將本地更改推送到登錄分支,但是它不起作用。
$ 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
...
git push
需要另外兩個參數:
origin
master
或login
也就是說,您想要:
git push origin login
將這兩個概念分開是很重要的:類似遠程的 origin
是您和Git用來跟蹤諸如https://github.com/some/repo.git
或ssh://git@github.com/some/repo.git
等較長名稱的簡稱。 ssh://git@github.com/some/repo.git
,它與分支名稱完全不同。
造成這種混亂的原因是,除了這些概念和術語( 遠程和分支)之外,還有第三個概念,用另一個單詞序列來描述,通常寫為遠程跟蹤分支 。 1第三個概念涉及形式為origin/master
和origin/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>...
]]
我在這里談論的兩個參數稱為存儲庫和refspec ,而不是遠程和分支 。 作為一個初學者,如何實現所有這些還不清楚。
(這是一種長篇大論的說法,即Git文檔並不是很好。)
1我現在更喜歡術語“ 遠程跟蹤名稱” ,因為盡管它具有分支名稱的某些方面,但也有一些不同之處。 無論哪種方式,第三個概念都采用上面顯示的形式。
2較早版本的git push
具有較少的可選參數。
看來您使用的是錯誤的語法。 git push
將URL,路徑或遠程作為第一個參數,然后在其后進行分支。 因此,如果要將當前login
分支推送到origin
上的login
分支,則需要輸入git push origin login
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.