[英]git checkout tag, git pull fails in branch
我克隆了一個git存儲庫,然后簽出了一個標簽:
# git checkout 2.4.33 -b my_branch
這沒關系,但是當我嘗試在我的分支中運行git pull
時,git吐出了這個錯誤:
當前分支沒有跟蹤信息。 請指定要合並的分支。 有關詳細信息,請參閱git-pull(1)
git pull <remote> <branch>
如果您希望為此分支設置跟蹤信息,可以使用以下命令:
git branch --set-upstream new origin/<branch>
我希望git pull
只更新master分支並保留當前分支(無論如何它都是標記)。 這樣的事情可能嗎?
我需要這個的原因是我有一個自動腳本,總是git拉存儲庫,當然因為上面的錯誤而失敗..
編輯:對於較新版本的Git, - --set-upstream master
已被棄用,您應該使用--set-upstream-to
:
git branch --set-upstream-to=origin/master master
根據提示,您可以運行:
git branch --set-upstream master origin/master
之后,您只需運行git pull
即可更新代碼。
我有同樣的問題,並使用此命令修復它:
$ git push -u origin master
從幫助文件中,-u基本上設置了pulls的默認值:
-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.<name>.merge in
git-config(1).
試試這些命令:
git pull origin master
git push -u origin master
使用切換回主分支
$ git checkout master
然后運行git pull
操作
$ git pull origin/master
然后,您可以再次切換回my_branch
。
@alesko :在checkout my_branch
之后只能執行git pull
才能更新master
分支。
因為git pull
也會合並到當前分支 - >你的場景中的my_branch
@Simon :那也會推動。 這是為什么?
$ git branch -u origin/master
Branch master set up to track remote branch master from origin.
並根據文件:
-u <upstream>
Set up <branchname>'s tracking information so <upstream> is considered
<branchname>'s upstream branch. If no <branchname> is specified,
then it defaults to the current branch.
首先,確保你在正確的分支上。
然后(僅一次):
git branch --track
之后再次運作:
git pull
你可能有多個分支。 而您當前的分支機構並沒有將其上游設置為遠程。
解決此問題的步驟:
git checkout branch_name
git branch --set-upstream-to=origin/remote_branch_name local_branch_name
例如
// this set upstream of local branch develop to remote branch origin/develop,
git branch --set-upstream-to=origin/develop develop
這樣做之后,當你執行git pull
,它會從指定的分支中拉出來。
試試這個
git checkout master
git pull origin master
您可以指定要拉出的分支:
git pull origin master
或者你可以設置它,以便你的本地主分支跟蹤github主分支作為上游:
git branch --set-upstream-to=origin/master master
git pull
克隆存儲庫時會自動為您設置此分支跟蹤(僅適用於默認分支),但如果將遠程數據庫添加到現有存儲庫,則必須自行設置跟蹤。 值得慶幸的是,git給出的建議很容易記住該怎么做。
顯然,-set-upstream在git 1.9.x中被棄用了。 繼續前進你想要使用類似的東西
git branch -u origin/master
假設你已經檢查過主人。 如果沒有, git branch -u origin/master master
將起作用
您需要為當前分支設置跟蹤(上游)
git branch --set-upstream master origin/master
已經棄用,而不是你可以使用--track flag
git branch --track master origin/master
我也喜歡@casey通知的文檔參考:
-u <upstream>
Set up <branchname>'s tracking information so <upstream> is considered
<branchname>'s upstream branch. If no <branchname> is specified,
then it defaults to the current branch.
對我有用的是:git branch --set-upstream-to = origin master當我再次執行pull時,我只得到master的更新,警告就消失了。
如果像我這樣你需要一直這樣做,你可以設置一個別名,通過在.gitconfig
文件中添加以下內容來自動.gitconfig
:
[alias]
set-upstream = !git branch --set-upstream-to=origin/`git symbolic-ref --short HEAD`
當您看到消息“ There is no tracking information...
,只需運行git set-upstream
,然后再次執行git push
。
為了下載更新:
git fetch origin master
但是,這只會更新名為origin/master
的引用。 更新本地master
的最佳方法是在另一條評論中提到的結帳/合並。 如果您可以保證本地master
沒有偏離origin/master
所在的主干線,您可以使用git update-ref
將當前master
映射到新點,但這可能不是最佳解決方案。定期......
不推薦使用此命令: git branch --set-upstream master origin/master
因此,在嘗試設置跟蹤時,這是對我有用的命令:
git branch --set-upstream-to=origin/master master
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.