2

При работе с Git в Android Studio возникла следующая проблема:

Хотелось бы добавить локальный репозиторий, например, на флэшку. Т.е., я хочу клонировать проект с одного локального репозитория (на ПК) на другой (на флэшку) (например, чтобы если с ПК что-то случится, можно было этот проект взять с флэшки). При этом потом при внесении изменений в проект необходимо, чтобы каждый из репозиториев можно было обновить.

В интернете много информации про то, как это сделать для серверов, т.е. клонировать текущий репозиторий с проектом, например, в GitHub.

А как это сделать для локального репозитория? Каким образом можно клонировать проект из одного локального репозитория в другой в Android Studio?

Содержимое файла config в папке .git которая создается после клонирования в локальный репозиторий:

[core]
    repositoryformatversion = 0

filemode = false

bare = false

logallrefupdates = true

symlinks = false

ignorecase = true

hideDotFiles = dotGitOnly
[remote "origin"]

url = D:\\workDinar\\Android\\GitExperiment

fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]

remote = origin
    merge = refs/heads/master
foxis
  • 771
  • 1
    Кратко: bare-репозиторий на флешке, git remote add backup path/to/repo, – Nick Volynkin Jun 01 '16 at 14:02
  • @NickVolynkin, спасибо за ответ. С командной строкой вроде все понятно. А есть ли возможность это сделать встроенными средствами Android Studio ? – foxis Jun 01 '16 at 14:05
  • вряд ли, не сталкивался. – Nick Volynkin Jun 01 '16 at 14:07
  • @NickVolynkin, почему тогда на удаленный репозиторий можно клонировать (например GitHub, в интернет есть статьи на эту тему) а в локальный нет ? Разницы ведь по сути никакой. – foxis Jun 01 '16 at 14:11
  • 1
    Если в студии клонировать на локальный носитель по схеме, как на удаленный, но указав вместо URL путь на диске, то почему то клонируется только папка /.git, а весь проект (сами файлы) не клонируется (то же и с командой clone из VCS -> Git -> Clone), по крайней мере у меня не получилось, но возможно истина где то рядом – pavlofff Jun 01 '16 at 14:59
  • @pavlofff, у меня тоже самое было. В новом локальном репозитории только Git файл был после клонирования. – foxis Jun 01 '16 at 17:36
  • @pavlofff наверное это bare-репозиторий. В нем только данные, а файлов нет. Он не предназначен для коммитов, только push в него можно. – Nick Volynkin Jun 01 '16 at 17:54
  • @pavlofff, foxis, а какой именно url вы указывали при клонировании? в ms/windows надо что-то вроде file:///C:/путь/к/каталогу/ (вероятно, вариант file:///C:/путь/к/каталогу/.git — не подходит (или наоборот)). – aleksandr barakin Jun 01 '16 at 18:53
  • @alexanderbarakin, url указывал обычный к примеру D:\Work\SomeRep. Но почему-то файлы не копируются. Возможно конечно надо вводить в том стиле, который вы рекомендуете ( file:///C:/путь/к/каталогу/ ). Надо будет попробовать. – foxis Jun 01 '16 at 19:16
  • @foxis, посмотрите ответы к вопросу, ссылку на который я приводил в ответе: http://stackoverflow.com/q/2519933/4827341 // там разные примеры приведены. – aleksandr barakin Jun 01 '16 at 19:19
  • @pavlofff, foxis, на тестовой машине с gnu/linux, которую не жалко, установил android studio, склонировал образцовый проект в каталог /путь/к/репозиторию и прекрасно сделал в android studio клон этого репозитория, указав в качестве url-а путь к этому каталогу (/путь/к/репозиторию). так что под ms/windows вопрос только в правильном url-е. – aleksandr barakin Jun 01 '16 at 20:24
  • @alexanderbarakin Я всякие пробовал пути указывать - и обычный Windows, и начиная с file:/ , и слеши в разные стороны и все, какие есть способы указания пути - копирует только папку /.git. Я думаю, если бы проблема была в пути, то и эта папка бы не склонировалась. – pavlofff Jun 02 '16 at 02:51
  • 1
    @pavlofff, foxis, судя по содержимому выложенного в тексте вопроса файла .git/config, с репозиторием всё в порядке. ну, если android studio не делает git checkout после клонирования, то это просто «баг» этой программы, о котором стоит сообщить её разработчикам. – aleksandr barakin Jun 02 '16 at 11:27
  • @alexanderbarakin, спасибо большое за помощь, с клонированием в Android Studio теперь более менее стало понятно. – foxis Jun 02 '16 at 13:14

1 Answers1

2

клонировать локальный репозиторий, как и удалённый, можно абсолютно стандартной командой:

$ git clone url-репозитория
  • в unix-like операционных системах url-репозитория представляет собой просто путь к репозиторию: /путь/к/каталогу/.git или даже без последней части: /путь/к/каталогу.
  • в не-unix-like операционных системах чуть сложнее: url-репозитория, видимо, должен выглядеть примерно как: file:///C:/путь/к/каталогу/.git (или file:///C:/путь/к/каталогу).

предполагаю, что ровно то же самое можно проделать не только в программе android studio, но и в любой другой программе, способной выполнить программу git с командой clone и нужными параметрами. надо просто указать правильный url-репозитория.


обновление

вот инструкция с картинками, какие кнопки в android studio надо нажимать для клонирования произвольного репозитория. картинки здесь приведу для сохранности:

введите сюда описание изображения

введите сюда описание изображения

введите сюда описание изображения

  • Я имел в виду что bare-репозиторий студия скорее не умеет создавать. – Nick Volynkin Jun 01 '16 at 15:00
  • @NickVolynkin, я вас понял. да, нормальная схема при наличии двух и более клонов — клонировать их не друг из друга, а из bare-клона. но на первых порах автору вопроса, по-моему, лучше не забивать голову подобной информацией. впрочем, для других читателей, вероятно, лучше этот момент упомянуть. вы не помните, может быть у нас тут уже есть ответ, в котором такая схема разжёвана? – aleksandr barakin Jun 01 '16 at 15:08
  • @alexanderbarakin, вы правы. Суть то вопроса как раз в том чтобы клонировать встроенными средствами среды разработки Android Studio. А не заморачиваться командной строкой (я понимаю что нужно изучать командную строку, но пока мне хотелось начать с более простого варианта работы с VCS). Если у Android Studio нет нормального инструментария в этом случае я лучше буду пользоваться sourceTree, которая более понятна на мой взгляд. Просто хотелось иметь весь инструментарий в одной программе. – foxis Jun 01 '16 at 17:49
  • 1
    @foxis, в ответе написано в том числе и по поводу android studio. в последнем абзаце. Если у Android Studio нет нормального инструментария в этом случае я лучше буду пользоваться sourceTree — формльно его (инструментария) нет ни там ни там. ведь обе упомянутые программы используют программу git (в виде исполняемого файла или библиотеки). но обе отлично умеют делать git clone, что вам и требуется. так что (с некоторой долей условности) можно сказать, что «подходящий интсрументарий» есть у обеих упомянутых вами программ. – aleksandr barakin Jun 01 '16 at 18:01
  • @alexanderbarakin, большое спасибо вам за ответ. Вы мне все время говорите пользоваться командной строкой. Я же спрашиваю есть ли в GUI в Android Studio такая функция. К примеру в винде копировать и вставлять файлы можно через командную строку и через GUI. Сейчас получается в командной строке есть эта функция (в нашем случае клонирование), а в GUI это нормально не реализовано. Кстати в sourceTree как раз клонирование адекватно реализовано именно в GUI что выгодно его отличает от Android Studio. – foxis Jun 01 '16 at 18:28
  • 1
    @foxis, Вы мне все время говорите пользоваться командной строкой — не вижу, где я вам такое говорил. а в GUI это нормально не реализовано — да реализовано, конечно! вот вам про клонирование, с картинками. только url репозитория укажите верно, как в ответе написано. – aleksandr barakin Jun 01 '16 at 18:38
  • @alexanderbarakin, спасибо за ответ. Фишка в том что в статьях которые в сети и в вашем примере в том числе говориться как клонировать в Android Studio во внешний репозиторий. Если те же самые манипуляции сделать с локальным репозиторием, например на флэшке, то файлы почему-то не копируются (см. комментарии к моему вопросу). – foxis Jun 01 '16 at 18:47
  • @alexanderbarakin, попробуйте сделать то, что у вас на картинках с локальным репозиторием (на ПК или на флэшке), У меня к сожалению не получилось. – foxis Jun 01 '16 at 18:58
  • 1
    @foxis, к сожалению, не могу: у меня нет не только android studio, но и даже ms/windows. насколько я понял, в указанном каталоге у вас создаётся под-каталог .git (с содержимым репозитория), а больше файлов/каталогов не создаётся? приложите, пожалуйста, к тексту вопроса содержимое файла .git/config, который создаётся при попытке клонирования. это простой текстовый файл. – aleksandr barakin Jun 01 '16 at 19:03
  • @alexanderbarakin, выложил содержимое файла .git/config который создается после клонирования в локальный репозиторий. – foxis Jun 02 '16 at 04:46