簡體   English   中英

git checkout標簽,git pull在分支中失敗

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

感謝https://zarino.co.uk/post/git-set-upstream/

為了下載更新:

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.

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