![](/img/trans.png)
[英]`git pull` doesn't merge, but `git pull origin <branch-name>` does, why?
[英]Why do I have to git pull origin <branch-name> in git?
我是使用GIT的新手,並且閱讀了文檔指南,但似乎無法將我的頭全神貫注。
假設github源包含兩個分支,即master和foobar。 現在,當我在系統上執行git branch
時,它會顯示兩個分支的名稱,這意味着我在系統上同時具有兩個分支。
但是,當我執行git checkout foobar
然后執行git pull
,什么也沒有發生,而是git告訴我,
`當前分支沒有跟蹤信息。 請指定您要合並的分支。 有關詳細信息,請參見git-pull(1)。
git pull <remote> <branch>
如果您希望為此分支機構設置跟蹤信息,可以使用以下方法:
git branch --set-upstream-to=origin/<branch> foobar
`
只有當我執行git pull origin foobar
時,文件才會根據GitHub上的更新內容進行修改和更改。 為什么會這樣? 我在做git pull
時哪里出錯了? AFAIK,我以為執行git pull
會將當前分支更新為最新的代碼提交。
聽起來您已經創建了本地分支foobar
並在存儲庫中分別創建了一個分支,也稱為foobar
。 盡管名稱相同,但這些分支尚未鏈接。
如果您沒有本地分支foobar
,則git checkout foobar
變為git checkout -b foobar --track origin/foobar
第二部分( --track origin/foobar
)是您要注意的部分。 這將為您的初始結帳操作設置遠程跟蹤。
要解決此問題,您可以執行被告知要運行的命令-事后將為您設置上游分支。 請注意,在大多數情況下,這是一個壞主意(因為原始checkout命令應執行的操作)。 但是,在您的情況下,您似乎已經創建了兩個單獨的(但基本上是相同的)分支。
Git是一個功能強大的工具,它為用戶提供了大部分功能。 拉取=提取+合並。 git是否應該自動假設由於您在本地使用foobar
(您簽出了本地分支foobar
, 而不是remote ),並且如果有一個遠程應該從中退出呢? Git不會自動回答該問題。
根據我對git的經驗,除非您從它的GUI開始,例如sourcetree ,否則您會發現它令人沮喪。
總結一下,要從遠程拉出,您需要指定remote分支 ,而不是local,它將嘗試將其與您當前的本地工作分支合並。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.