【问题标题】:After git cloning a repo, I only get a branch instead of all of them. Android Studio doesn't recognise the rest of them在 git 克隆一个 repo 之后,我只得到一个分支而不是所有分支。 Android Studio 无法识别其余部分
【发布时间】:2018-05-12 10:42:08
【问题描述】:

我在 Udacity 中有一个示例 Android 项目,其中包含几个练习,每个练习都位于不同的分支中。我已经分叉了存储库,然后 git 从 Android Studio 终端克隆了分叉的版本。 但是,当我 git branch 查看可用的分支时,唯一存在的分支是名为 develop_branch 或 StarterCode 的分支。你可以看到回购here。因此,如果我尝试对某些练习进行 git 分支,则会创建一个新分支。最重要的是,我在 Android Studio 中看到的代码来自唯一被克隆的分支...... 我曾尝试对类似问题(如Git- My branches are not showing after cloning a repoOnly master branch is visible after cloning a Git repo)实施一些解决方案,但我认为具体问题有所不同。我相信这与 Android Studio 有特别的关系。

我想补充一点,几天前我对另一个项目做了同样的事情,没有这些问题。一切正常。唯一的区别是,当我第一次克隆 repo 时,我克隆到了错误的文件夹中。然后我将其删除并将其克隆到我想要的文件夹中。如果这是导致问题的原因,有没有办法解决它?

【问题讨论】:

  • 执行git branch -a 以查看所有可用的远程分支。
  • @castis 当我 git fetch --all 时,它说“正在获取来源”。之后,如果我再次检查,我仍然看不到分支。
  • @TimBiegeleisen git branch -a 返回所有分支的列表,从 remotes/origin 开始。所以,它们都像 remotes/origin/T0X.01-Exercise-GoogleApiClient 等等。
  • 你有没有看到任何看起来像你想要的分支的名字?
  • 首先,阅读简短的 git 教程以了解基础知识。您的问题是您拥有遥控器,但必须一一检出它们以创建相应的本地跟踪分支。 (而且您不需要从所有 remotes 获取的“fetch - -all”。正常的 fetch 已经获取了 origin 远程的所有分支)

标签: git android-studio github version-control


【解决方案1】:

我已经分叉了存储库,然后 git 克隆了分叉的版本 从 Android Studio 终端。但是,当我 git branch 看到 可用的分支,唯一存在的分支是名为 develop_branch 或 StarterCode。

这是 git 的工作方式。当您在本地克隆具有多个分支的 git 存储库时,只有默认分支将是 checkout。基于远程仓库,目前默认分支为develop_branch。所以当你从 github 克隆 git repo 时,唯一的本地分支是develop_branch

要切换到另一个分支对应远程分支,可以使用命令:

git checkout <remote branch name>

然后远程分支将在本地结帐。

要检查两个分支之间的差异,可以使用命令:

git diff branchname1 branchname2 --name-only

比如可以通过git diff develop_branch T0X.01-Exercise-GoogleApiClient --name-only查看develop_branchT0X.01-Exercise-GoogleApiClient的区别。

如果文件在develop_branchT0X.01-Exercise-GoogleApiClient之间的版本不同,但在android studio中显示相同的代码,那么您可以从以下方面进行故障排除:

  1. 检查分支是否切换成功

    假设你需要从develop_branch切换到T0X.01-Exercise-GoogleApiClient,你可以在android studio窗口底部查看当前分支。

  2. 关闭文件并重新打开

    如果文件内容没有对应不同的分支发生变化,可以关闭文件重新打开,然后再检查内容。

【讨论】:

    【解决方案2】:

    运行git branch -a 显然确实表明你有跟踪你想要的分支的分支,你在评论中说:

    是的,所有的分支名称都是我想要的

    那么你需要做的就是检查一个本地分支

    git checkout T0X.01-Exercise-GoogleApiClient
    

    Git 会自动创建一个本地分支来跟踪origin/T0X.01-Exercise-GoogleApiClient

    【讨论】:

    • 这样做会导致以下结果:Branch 'T0X.01-Exercise-GoogleApiClient' set up to track remote branch 'T0X.01-Exercise-GoogleApiClient' from 'origin'. Switched to a new branch 'T0X.01-Exercise-GoogleApiClient'。但是,Android Studio 中显示的代码不是与 T0X.01 练习对应的代码 - 它与 StarterCode 保持相同。
    • 有没有可能这个分支没有你认为的代码?
    • 我完全确定所有分支都包含我正在寻找的代码。我可以在 Github 的分叉仓库中看到它
    【解决方案3】:

    我不知道它是否可以解决我的问题,但是我想将答案标记为已解决。 我最终发现,不知何故,在本地克隆的唯一东西只有一个分支,所以每当我尝试切换到另一个分支时,它只是被创建而没有实际跟踪相应的分支。在我从机器上删除项目并第三次执行 git clone 后,它终于被正确克隆了。

    有趣的是,我总是复制 repo 的同一个网址。我无法理解是什么导致了这种行为。

    【讨论】:

      猜你喜欢
      • 2017-06-17
      • 2019-01-19
      • 2022-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-28
      相关资源
      最近更新 更多