[英]Difference between origin master & origin/master with git pull and git push commands
我是git的新手我對git pull和git push命令幾乎沒有疑問。
例:
讓我們假設我在本地機器“master”和“newbranch”(本地分支)中有兩個分支。
$ git checkout newbranch
$ git branch
*newbranch //Assume this is local branch only
master
現在,以下命令到底是做什么的?
git pull origin master - >它會將更改從遠程“master”拉到“newbranch”(當前結帳本地分支)。
git pull origin / master - >它會將'local'“master”中的最新更改拉到“newbranch”(當前結帳本地分支)。
git push origin master - >它會將“newbranch”(當前結帳本地分支)中的新更改推送到“remote”“master”。
git push origin / master - > ?? 這究竟是做什么的?
任何人都可以澄清疑問。
Thanks in advance
git pull origin master
或git pull origin/master
它會將更改從遠程master
服務器提取到“newbranch”(當前結帳本地分支)。
確切地說 - 兩者都會做同樣的事情
最小的區別是origin/master
將引用存儲在存儲庫中的本地副本。
最佳實踐是在使用以下方法更新本地存儲庫之前:
git fetch --all --prune
git push origin master
將“newbranch”(目前結帳本地分支)的新變化推送到“遠程”“主”。
那種 ,
Git會嘗試將當前分支推送到遠程主服務器,因為你在不同的分支上然后掌握(取決於你本地的git版本)git不會讓你這樣做。
如果分支存在於遠程中,它將嘗試推送到相同的分支名稱(被跟蹤的分支),並再次依賴於它將推送到遠程的git版本或將引發錯誤。
git push origin/master
它將推送到遠程跟蹤分支。
Git將使用origin/master
作為遠程名稱,並嘗試將當前分支名稱推送到此遠程。
在你的情況下,如果你在newbranch
它將嘗試推送到遠程命名origin/master
ab分支名稱newbranch
通常,此命令的語法是:
git push <remote> [refspec]
如果省略refspec,則簡化為:
git push <remote>
它的行為取決於git config push.default變量中設置的內容。 git消息說:
當push.default設置為'matching'時,git會將本地分支推送到已存在的具有相同名稱的遠程分支。
在Git 2.0中,Git將默認為更保守的“簡單”行為,它只將當前分支推送到'git pull'用於更新當前分支的相應遠程分支。
要設置“匹配”模式:
git config --global push.default matching
並設置'簡單'模式:
git config --global push.default simple
讓我們回到你的具體案例。 將提交提交到名為“origin / master”的遠程控制器將失敗,因為沒有“origin / master”遠程存在(默認遠程稱為“origin”)。 要使其工作,您必須手動添加此類遠程,例如通過調用:
git remote add origin/master <git-repository-url>
但是請注意,這樣的操作會讓你的本地git非常困惑,你將不得不處理這樣的錯誤:
$ git push origin/master
Counting objects: 5, done.
Writing objects: 100% (3/3), 253 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@github.com:sarxos/test.git
820474f..3706ea9 master -> master
error: unable to resolve reference refs/remotes/origin/master/master: Not a directory
error: Cannot lock the ref 'refs/remotes/origin/master/master'.
還有一些:
$ git fetch origin/master
error: unable to resolve reference refs/remotes/origin/master/master: Not a directory
From github.com:sarxos/test
! [new branch] master -> origin/master/master (unable to update local ref)
error: some local refs could not be updated; try running
'git remote prune origin/master' to remove any old, conflicting branches
所以我不建議使用它。
如果你想推送到origin / master(名為'origin'的遠程名稱和名為'master'的遠程分支),你應該:
git push origin master
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.