繁体   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