簡體   English   中英

使用git pull和git push命令在origin master和origin / master之間進行區分

[英]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 mastergit 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM