簡體   English   中英

克隆回購,其分支機構和git結賬

[英]cloned repo, its branches and git checkout

我從github克隆了一個帶有2個分支的repo:

git clone https://github.com/user/repo
cd repo

當我做一個git branch ,它只顯示主分支。 然后我做了一個git branch -a它顯示了所有分支。

master
remotes/origin/HEAD
remotes/origin/master
remotes/origin/develop

然后我做了一個git checkout develop

Branch develop set up to track remote branch develop from origin.
Switched to a new branch 'develop'

然后git checkout master回到master分支。

為什么git checkout developgit checkout origin/develop (它說我處於獨立頭狀態)?

你應該做的:

git checkout --track -b develop origin/develop
# or
git checkout -t origin/develop

git checkout :如果你沒有指定一個起點,它從當前的HEAD開始(在你的情況下是master ,意味着你的'develop'分支不是從你認為應該的地方開始)。

在--track選項中,請參閱“ Git:什么是跟蹤分支? ”。

如果要查看/跟蹤本地存儲庫中的所有遠程分支 ,請參閱“將所有遠程git分支跟蹤為本地分支 ”。

你的起點是高手,因為你的git分支返回了當前的分支:master。
如果您在那里進行git checkout開發,它將從當前分支開始。

當你說git checkout develop(沒有指定遠程“ origin ”)時,它會嘗試簽出一個名為develop的本地分支。 但是你的gitconfig是這樣設置的,如果它找不到具有該名稱的本地分支,它將自動查找origin/develop 它發現並檢出了一個名為develop本地的新分支,並自動將其設置為跟蹤遠程分支。

當你git checkout origin/develop ,你正在檢查你的上游develop分支的緩存副本。 您無法編輯這些分支。 這就是為什么git告訴你你處於一個獨立的頭狀態。

如果你想進行更改,你需要提交到本地develop分支,然后進行git push

您還沒有創建分支'develop'。 為此,您需要創建一個遵循“origin / develop”分支的分支:

git checkout -b develop origin/develop

新分支'develop'與遠程分支'origin / develop'分離。 git故意這樣做:去耦允許分支獨立變化。 出於多種原因這是可取的,但我發現最有用的兩個是:

  1. 您可以進行一系列更改,這些更改與github分支中所做的更改無關。

  2. 除非您希望這些更改,否則github存儲庫中所做的更改不會自動合並到您的分支中。 例如,如果“origin / develop”具有特別不穩定的歷史,您可能希望控制何時將新更改合並到本地分支“develop”中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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