origin意思 - git track remote branch




如何查看遠程Git分支? (18)

有人用git push origin test將名為test的分支git push origin test送到共享存儲庫。 我可以看到git branch -r

現在我正在嘗試檢查遠程test分支。

我試過了:

  • git checkout test什麼都不做

  • git checkout origin/test給出* (no branch) 。 這令人困惑。 我怎麼能在“沒有分支”?

如何查看遠程Git分支?


接受的答案不適合你?

雖然第一個和選定的答案在技術上是正確的 ,但您可能還沒有從遠程存儲庫中檢索所有對象和引用。 如果是這種情況,您將收到以下錯誤:

$ git checkout -b remote_branch origin/remote_branch

致命:git checkout:更新路徑與切換分支不兼容。
您是否打算簽出無法解析為提交的'origin / remote_branch'?

如果收到此消息,則必須首先執行git fetch origin ,其中origin是運行git checkout remote_branch之前遠程存儲庫的名稱。 以下是響應的完整示例:

$ git fetch origin
remote: Counting objects: 140, done.
remote: Compressing objects: 100% (30/30), done.
remote: Total 69 (delta 36), reused 66 (delta 33)
Unpacking objects: 100% (69/69), done.
From https://github.com/githubuser/repo-name
   e6ef1e0..5029161  develop    -> origin/develop
 * [new branch]      demo       -> origin/demo
   d80f8d7..359eab0  master     -> origin/master

$ git checkout demo
Branch demo set up to track remote branch demo from origin.
Switched to a new branch 'demo'

如您所見,運行git fetch origin檢索了我們尚未設置為在本地計算機上跟踪的任何遠程分支。 從那裡開始,因為我們現在有一個參考遠程分支,我們可以簡單地運行git checkout remote_branch ,我們將獲得遠程跟踪的好處。


更新

Jakub的答案實際上改善了這一點。 Git版本≥1.6.6,只有一個遙控器,您可以這樣做:

git fetch
git checkout test

正如用戶masukomi在評論中指出的那樣,如果你有多個遙控器, git checkout test將不適用於現代git。 在這種情況下使用

git checkout -b test <name of remote>/test

老答案

在開始在遠程分支上本地工作之前,您需要在下面的答案中調用它。

要獲取分支,您只需:

git fetch origin

這將為您獲取所有遠程分支。 您可以通過以下方式查看可用於結帳的分支機構:

git branch -v -a

有了遠程分支機構,您現在需要查看您感興趣的分支機構,為您提供本地工作副本:

git checkout -b test origin/test

git fetch && git checkout your-branch-name


git remote show <origin name>命令將列出所有分支(包括未跟踪的分支)。 然後,您可以找到需要獲取的遠程分支名稱。

例:

$ git remote show origin

使用以下步驟獲取遠程分支:

git fetch <origin name> <remote branch name>:<local branch name>
git checkout <local branch name > (local branch name should the name that you given fetching)

例:

$ git fetch origin test:test
$ git checkout test

好的 ,答案很簡單......你基本上看到了分支,但你還沒有本地副本!...

你需要fetch分支......

您可以簡單地獲取然後結帳到分支,使用下面的一行命令來執行此操作:

git fetch && git checkout test

我還創建了下面的圖片,供您分享差異,看看fetch工作原理以及它的不同之處:


獲得新創建的分支機構

git fetch

切換到另一個分支

git checkout BranchName

使用:

git checkout -b <BRANCH-NAME> <REMOTE-NAME>/<BRANCH-NAME>

在我的良性案例中,其他答案不適用於現代Git。 如果遠程分支是新的,您可能需要先拉,但我沒有檢查過這種情況。


其他人和女孩給出了解決方案,但也許我可以告訴你為什麼。

git checkout test什麼都不做

Does nothing不相等doesn't work ,所以我猜你在終端輸入'git checkout test'並按回車鍵,不會出現任何消息,也不會出現錯誤。 我對嗎?

如果答案是'是',我可以告訴你原因。

原因是工作樹中有一個名為“test”的文件(或文件夾)。

解析git checkout xxx

  1. Git最初將xxx視為分支名稱,但沒有任何名為test的分支。
  2. 然後Git認為xxx是一個路徑,幸運的是(或不幸的是),有一個名為test的文件。 所以git checkout xxx意味著丟棄xxx文件中的任何修改。
  3. 如果沒有名為xxx文件,那麼Git將嘗試根據某些規則創建xxx 。 其中一條規則是,如果存在remotes/origin/xxx則創建一個名為xxx的分支。

命令

git fetch --all
git checkout -b <ur_new_local_branch_name> origin/<Remote_Branch_Name>

等於

 git fetch --all

然後

 git checkout -b fixes_for_dev origin/development

兩者都將從development創建latest fixes_for_dev


在這種情況下,您可能希望創建一個跟踪遠程test分支的本地test分支:

$ git branch test origin/test

在早期版本的git ,您需要一個顯式的--track選項,但是當您從遠程分支分支時,這是默認選項。


如果遠程分支名稱以特殊字符開頭,則需要在checkout命令中使用單引號,否則git將不知道您正在談論哪個分支。

例如,我試圖檢查一個名為#9773的遠程分支,但命令無法正常工作,如下圖所示:

出於某種原因,我想知道尖銳的符號(#)是否與它有關,然後我嘗試用單引號包圍分支名稱,比如'#9773'而不僅僅是#9773 ,它運行良好。

$ git checkout -b '#9773' origin/'#9773'

您可以使用以下Bash腳本開始跟踪所有遠程分支:

#!/bin/bash
git fetch --all
for branch in `git branch -r --format="%(refname:short)" | sed 's/origin\///'`
  do git branch -f --track "$branch" "origin/$branch"
done

這也是一個單行版本:

git fetch --all; for branch in `git branch -r --format="%(refname:short)" | sed 's/origin\///'`; do git branch --track "$branch" "origin/$branch" ; done ;

我嘗試了上面的解決方案,但它沒有用。 試試這個,它有效:

git fetch origin 'remote_branch':'local_branch_name'

這將獲取遠程分支並創建一個名為local_branch_name的新本地分支(如果尚不存在)並跟踪其中的遠程分支。


我遇到了error: pathspec 'desired-branch' did not match any file(s) known to git.的情況error: pathspec 'desired-branch' did not match any file(s) known to git. 對於上述所有建議。 我正在使用git版本1.8.3.1。

所以這對我有用

git fetch origin && git checkout branch_name 

背後的解釋是我注意到在獲取遠程分支時,它被取出到FETCH_HEAD:

git fetch origin desired-branch
git checkout -b desired-branch FETCH_HEAD

要克隆Git存儲庫,請執行以下操作:

git clone <either ssh url /http url>

上面的命令檢出所有分支,但只初始化master分支。 如果要結帳其他分支機構,請執行以下操作:

git checkout -t origin/future_branch (for example)

此命令檢出遠程分支,您的本地分支名稱將與遠程分支相同。

如果要在結帳時覆蓋本地分支名稱:

git checkout -t -b enhancement origin/future_branch

現在您的本地分支名稱是enhancement ,但您的遠程分支名稱是future_branch

Documentation


請按照命令創建一個空文件夾。 輸入並使用此命令:

saifurs-Mini:YO-iOS saifurrahman$ git clone your_project_url
Cloning into 'iPhoneV1'...
remote: Counting objects: 34230, done.
remote: Compressing objects: 100% (24028/24028), done.
remote: Total 34230 (delta 22212), reused 15340 (delta 9324)
Receiving objects: 100% (34230/34230), 202.53 MiB | 294.00 KiB/s, done.
Resolving deltas: 100% (22212/22212), done.
Checking connectivity... done.
saifurs-Mini:YO-iOS saifurrahman$ cd iPhoneV1/
saifurs-Mini:iPhoneV1 saifurrahman$ git checkout 1_4_0_content_discovery
Branch 1_4_0_content_discovery set up to track remote branch 1_4_0_content_discovery from origin.
Switched to a new branch '1_4_0_content_discovery'

這將是遠程未命名源( documentation )的DWIM

$ git checkout -t remote_name/remote_branch

要添加新遙控器,您需要先執行以下操作:

$ git remote add remote_name location_of_remote
$ git fetch remote_name

第一個告訴Git遠程存在,第二個獲取提交。


首先,你需要做:

git fetch #如果你不知道分支名稱

git fetch origin branch_name

其次,您可以通過以下方式檢查遠程分支到您的本地:

git checkout -b branch_name origin/branch_name

-b將從您選擇的遠程分支創建指定名稱的新分支。





remote-branch