#git #repository #git-pull
#git #репозиторий #git-pull
Вопрос:
У меня есть содержимое огромного проекта (с некоторыми изменениями), но не база данных Git. Можно было бы попасть в такую же ситуацию, например, так:
git clone <...>/repo.git
cd repo
echo "Blah" > new_file.txt
rm .git
Поскольку мой репозиторий огромен, и все файлы проекта все еще там, я не хочу все повторно клонировать. Как я могу вернуться к нормальной ситуации, когда я мог бы зафиксировать и нажать мой new_file.txt
?
Я пытался искать в целом и среди других вопросов здесь, но, похоже, ничто не дает ответа на эту конкретную ситуацию.
Комментарии:
1. Мелкий клон?
2. Знаете ли вы, к какой «ветке» вы бы привязались? Знаете ли вы, как далеко вы отклонились от репозитория git? Вы единственный, кто работает над этим? В зависимости от того, что вы хотите сделать и как продвигается репозиторий git, здесь вы можете столкнуться с несколькими проблемами.
3. @jonrsharpe: Если я правильно понимаю, мелкое клонирование загружает только часть истории. Если это так, это было бы двойственно тому, что я хочу: я хочу загрузить всю историю, но без кода (у меня уже есть код)
4. @zrrbite: Да, я знаю ветку (в моем конкретном случае есть только одна!). Есть другие люди, работающие над репозиторием / веткой, и я знаю, что они несколько разошлись, но я также знаю, что конфликтов нет (мы работаем над непересекающимися наборами файлов)
Ответ №1:
- Скажем, клонируйте репозиторий, используя
git clone --no-checkout
другой каталогdir
. - Скопируйте
dir/.git
в свой репозиторий. - Перейдите в свой репозиторий и запустите
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-файл, загрузить его и скопировать в свою папку. Итак, шаги:
- Перейдите к папке в репозитории
- Сжать
.git
папку - Загрузите его
- Распакуйте его в свою папку
Комментарии:
1. Спасибо за предложение @lajos-arpad и @swisscodemen, это имеет большой смысл! Одна проблема: мой пульт находится в GitLab, и я не могу
.git
его там найти (не говоря уже о возможности его сжатия)2. @SimonBliudze Тогда вы можете выполнить инициализацию git, а затем добавить удаленный в качестве нового удаленного: articles.assembla.com/en/articles /…