Как я могу «вытащить» базу данных git без загрузки всего репозитория

#git #repository #git-pull

#git #репозиторий #git-pull

Вопрос:

У меня есть содержимое огромного проекта (с некоторыми изменениями), но не база данных Git. Можно было бы попасть в такую же ситуацию, например, так:

  1. git clone <...>/repo.git
  2. cd repo
  3. echo "Blah" > new_file.txt
  4. rm .git

Поскольку мой репозиторий огромен, и все файлы проекта все еще там, я не хочу все повторно клонировать. Как я могу вернуться к нормальной ситуации, когда я мог бы зафиксировать и нажать мой new_file.txt ?

Я пытался искать в целом и среди других вопросов здесь, но, похоже, ничто не дает ответа на эту конкретную ситуацию.

Комментарии:

1. Мелкий клон?

2. Знаете ли вы, к какой «ветке» вы бы привязались? Знаете ли вы, как далеко вы отклонились от репозитория git? Вы единственный, кто работает над этим? В зависимости от того, что вы хотите сделать и как продвигается репозиторий git, здесь вы можете столкнуться с несколькими проблемами.

3. @jonrsharpe: Если я правильно понимаю, мелкое клонирование загружает только часть истории. Если это так, это было бы двойственно тому, что я хочу: я хочу загрузить всю историю, но без кода (у меня уже есть код)

4. @zrrbite: Да, я знаю ветку (в моем конкретном случае есть только одна!). Есть другие люди, работающие над репозиторием / веткой, и я знаю, что они несколько разошлись, но я также знаю, что конфликтов нет (мы работаем над непересекающимися наборами файлов)

Ответ №1:

  1. Скажем, клонируйте репозиторий, используя git clone --no-checkout другой каталог dir .
  2. Скопируйте dir/.git в свой репозиторий.
  3. Перейдите в свой репозиторий и запустите git reset .

Комментарии:

1. Спасибо за предложение @fmontesi. Проблема здесь в том, что это приведет к клонированию всего репозитория с файлами проекта , чего я хочу избежать, потому что слишком много данных для загрузки.

2. Забыл упомянуть волшебный флаг : git clone --no-checkout . Это может помочь. Я попробую это завтра.

3. Ага, удалось опробовать это на планшете. 1. Клонируйте репозиторий, используя git clone --no-checkout в другой каталог. 2. Скопируйте .git в свой репозиторий. 3. Выполнить git reset . Готово. 🙂

4. Отлично, спасибо @fmontesi! Работает как шарм. Я добавил шаги 4 и 5, показывающие, как отслеживать коммиты, сделанные удаленно, но не локально.

Ответ №2:

Существует .git папка, в которой содержится база данных. Вы можете сжать это в zip-файл, загрузить его и скопировать в свою папку. Итак, шаги:

  1. Перейдите к папке в репозитории
  2. Сжать .git папку
  3. Загрузите его
  4. Распакуйте его в свою папку

Комментарии:

1. Спасибо за предложение @lajos-arpad и @swisscodemen, это имеет большой смысл! Одна проблема: мой пульт находится в GitLab, и я не могу .git его там найти (не говоря уже о возможности его сжатия)

2. @SimonBliudze Тогда вы можете выполнить инициализацию git, а затем добавить удаленный в качестве нового удаленного: articles.assembla.com/en/articles /…