0

на сервере есть сайт под CMS и GIT. Хочу локально развернуть репозиторий GIT на уже распакованный архив сайта. Проблема в том, что под git только часть директорий проекта, поэтому не могу просто сделать git clone в пустую папку. Какими командами можно поднять git в уже существующей локальной директории и получить для уже существующих файлов, которые отслеживаются, свежие изменения?

1 Answers1

1
  1. git init - инициализирует пустой репозиторий в текущей директории
  2. git remote add origin [url] - добавит удаленный репозиторий
  3. git add . - добавит все файлы в текущей директории в индекс
  4. git fetch - скачает все изменения из удаленного репозитория
  5. git checkout [branch] - переведет локальный репозиторий на нужную ветку(если это необходимо)
  • спасибо, первые 4-ре пункта сделаны, тут все понятно. Далее git status выводит наличие Untracked files. git checkout [branch] выдает ошибку error: pathspec 'master' did not match any file(s) known to git. и не очень понятно между какими ветками я должен переключаться в локальном репозитории – Alexxander Apr 03 '17 at 13:14
  • @Alexxander git fetch должен был скачать все изменения и создать в локальном репозитории те же ветки, что есть в удаленном. И после git add . не должно было остаться неотслеживаемых файлов. Может я неправильно понимаю условия задачи – Никита Гордеев Apr 03 '17 at 14:10
  • прошу прощения за неточность, действительно нет неотслеживаемых файлов после выполнения пунктов 1-4. Остается вопрос что делает п.5 из Вашего списка и почему при вводе команды git checkout [branch] выдает ошибку error: pathspec 'master' did not match any file(s) known to git В чем смысл переключения между ветками? – Alexxander Apr 03 '17 at 14:59
  • @Alexxander это на случай, если вы работаете не в ветке по умолчанию, потому что у меня обычно есть несколько веток типа "release", "dev", etc и, соответственно, ветка по умолчанию в репозитории, например, dev, а на сервере логично разворачивать release. Попробуйте сделать из текущего состояния git pull или git merge (смержит то, что скачано из удаленного репозитория и то, что лежит сейчас в локальном) – Никита Гордеев Apr 03 '17 at 15:17
  • в текущем состоянии git pull приводит к сообщению error: Your local changes to the following files would be overwritten by merge: Please commit your changes or stash them before you merge. Aborting.
    Команда $ git merge приводит к сообщению: fatal: No remote for the current branch.

    Я так понимаю, что надо сейчас слить локальные файлы и полученные из центрального репозитория на сервере. При этом безусловный приоритет должен быть у файлов из удаленного репозитория. Ветка везде пока одна - master.

    – Alexxander Apr 04 '17 at 07:26
  • @Alexxander команды git stash и git stash apply спрячут изменения и вернут их. После stash можно сделать pull. Это если надо сохранить локальные изменения. Чтобы перезаписать используйте git pull -f – Никита Гордеев Apr 04 '17 at 10:38
  • пробовал git stash и git pull -f - ошибки. Выполнял эти команды после git init и git remote add origin [url]. Пробовал их выполнять после команд git add . и git fetch. есть удаленный боевой репо с единственной веткой master. Локально развернул архив сайта (почти как боевой по составу). Делаю локально git init и git remote add origin [url]. Это все понятно и работает. Теперь хочу закачать свежие изменения на локальный репо. Сразу писать git pull -f не выходит, ошибки. Если не затруднит, объясните пожалуйста по шагам какие дальше команды и какой смысл каждой. Спасибо! – Alexxander Apr 05 '17 at 12:44
  • @Alexxander честно говоря нет больше идей, могу лишь посоветовать git-scm.com - там хорошо описаны все возможности гита, к тому же на русском. Возможно поможет ответ https://ru.stackoverflow.com/questions/515435/%D0%9A%D0%B0%D0%BA-%D0%BF%D1%80%D0%B8%D0%BD%D1%83%D0%B4%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE-%D0%BF%D0%B5%D1%80%D0%B5%D0%B7%D0%B0%D0%BF%D0%B8%D1%81%D0%B0%D1%82%D1%8C-%D0%BB%D0%BE%D0%BA%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5-%D1%84%D0%B0%D0%B9%D0%BB%D1%8B-%D0%B2%D0%BE-%D0%B2%D1%80%D0%B5%D0%BC%D1%8F-git-pull – Никита Гордеев Apr 05 '17 at 18:38
  • спасибо, значит пока буду читать заново git-scm, может позже придет озарение – Alexxander Apr 06 '17 at 07:53