首頁  >  文章  >  開發工具  >  git中push -u是什麼意思

git中push -u是什麼意思

WBOY
WBOY原創
2022-07-01 10:36:5017643瀏覽

在git中,「push -u」的意思是將本地的分支版本上傳到遠端合併,並且記錄push到遠端分支的預設值;當新增「-u」參數時,表示下次繼續push的這個遠端分支的時候推送命令就可以簡寫成「git push」。

git中push -u是什麼意思

本文操作環境:Windows10系統、Git2.30.0版、Dell G3電腦。

git中push -u是什麼意思

git push 指令用於從將本機的分支版本上傳到遠端並合併。

一般將本地倉庫推送到遠端倉庫的時候一般會使用 git push 指令。而身為新手,在網路上看到一些教學有的會在 git push 的時候帶一個 -u 參數,而有的則沒有。而推送的實際結果並沒有什麼差別。就很好奇 -u 參數的作用到底是什麼?

搜尋了一番,綜合了一些大家的說明和解析,總結記錄一下。

參數解析:

首先對於git push,有這樣一段描述:

-u

#–set -upstream

For every branch that is up to date or successfully pushed, add upstream (tracking) reference, used by argument-less git-pull(1) and other commands. For more information, see branch.&lt ;name>.merge in git-config(1).

在這個描述中,可以看到-u 參數與下面這個變數相關

branch.&lt ;name>.merge

branch.8a11bc632ea32a57b3e3693c7987c420.merge與branch.8a11bc632ea32a57b3e3693c7987c420.remote一起定義給定分支的上游分支(upstream)。它告訴git fetch/git pull要合併哪個分支,還可以影響git push.

而upstream是指其他人將從中獲取的主要存儲庫,例如您的GitHub存儲庫。 -u選項會自動為您設定上游,將您的倉庫連結到一個中央倉庫。這樣,將來Git會「知道」您要推送到的位置以及您要從哪裡提取的信息,因此您可以使用git pull或git push不使用參數。 

當您git pull從分支進行操作而未指定來源遠端或分支時,git會查看 branch.8a11bc632ea32a57b3e3693c7987c420.merge 設定以了解從何處提取。而正是git push -u 指令為您要推送的分支設定此訊息。

至此,簡單來說,帶上-u 參數其實就相當於記錄了push到遠端分支的預設值,這樣當下次我們還想要繼續push的這個遠端分支的時候推送指令就可以簡寫成git push即可。

範例展示:

下面展示一個範例來說明這一點。

andy@AndyMacBookPro:/usr/local/github/andy/php-examples$ 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> test

這個就是如果你之前沒有使用 -u 參數,後面省略了想要pull的分支參數而產生的結果。 pull 因為沒有track for the current branch. 所以他不知道你要從哪裡pull,所以這也就是 -u 參數的意義,指定trach branch。

其實你可以在指定完-u之後,去.git/config看GIT設定文件,可以看到下面有了branch "test"的分支的記錄:

[branch "master"] 
 remote = origin
merge = refs/heads/master 
[branch "test"]
remote = origin
merge = refs/heads/test

這樣git才能知道目前test下的remote和merge的信息,如果你在git push的時候沒有帶入-u參數,那麼config中就不會有branch "test"這一項。

 [branch "master"]
    remote = origin
    merge = refs/heads/master

設定說明,這告訴Git 2件事:

當您在master分支上時,預設的遙控器是origin。

在git pullmaster分支上使用時(未指定任何遠端和分支),請使用預設的remote(來源)並合併來自remote master分支的變更。

設定修改

您可以手動去.git/config修改GIT設定檔內容,也可以使用命令列設定這些選項。

 $ git config branch.master.remote origin
 $ git config branch.master.merge refs/heads/master

如果使用指令進行配置,它將有一定的糾錯能力。例如您鍵入了一個不存在的分支或您沒有執行git remote add 操作。在較新的git中,希望您使用git branch --set-upstream-to=origin/master master

其實,執行添加了-u 參數的命令git push -u origin master就相當於執行了

git push origin master 和

git branch --set-upstream master origin/master。

所以,在進行推送程式碼到遠端分支,且之後希望持續向該遠端分支推送,則可以在推送命令中添加 -u 參數,簡化之後的推送命令輸入。

推薦學習:《Git教學

以上是git中push -u是什麼意思的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn