клонирование git-репозитория, когда папка и файлы уже существуют - PullRequest
0 голосов
/ 17 января 2019

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

Теперь я хочу клонировать это на компьютер B, но git clone не работает, потому что папка и файлы уже существуют.

Итак, вот что я сделал на компьютере B:

git init
git remote add origin <my-github-rep.git>
git fetch

Теперь мне нужно принести последние файлы с github сюда.

git reset origin/master

Я думаю, это то, что сбрасывает текущий HEAD, чтобы он указывал на главную ветвь в источнике

Хорошо, теперь вот проблема:

Я бы предположил, что на данный момент мне нужно следующее:

git checkout -t origin/master

Потому что это принесло бы все последние файлы из источника и проверило бы все это на компьютере B. Это то, что я хочу, но это не работает. Вот сообщение об ошибке: « fatal: ветвь с именем« master »уже существует. »

Как мне преодолеть это и просто принести файлы? Что я сделал не так.

(чтобы уточнить: я не хочу просто удалять папку и файлы и просто клонировать репозиторий, потому что там есть еще много файлов, которые не должны быть в git, поэтому сложно выбирать ; на данный момент я хочу перезаписать все соответствующие файлы в моих локальных папках из последних файлов в удаленном хранилище - таким образом у меня будет самый последний код, а файлы, которые не отслеживаются git, не будут поражаются)

Ответы [ 2 ]

0 голосов
/ 17 января 2019
git branch                          <-- view list of branches>
git checkout master                 <-- switch branch to master>

Если это не работает

git branch -d branch_name           <-- delete the specified branch locally>

Для клонирования свежего локального кода филиала

git config --global                 <-- followed by the user id or name>
git clone repo_address.git          <-- repo_address.git is the repository url>
0 голосов
/ 17 января 2019

Ваша git reset команда создала ветвь с именем master. Это уже указывает на правильный коммит. Проблема в том, что теперь у вас есть заполненный индекс, но нет правильно заполненного рабочего дерева.

Самое простое решение на этом этапе - переместить все файлы, которые вы хотите сохранить , из этого каталога полностью, например, mkdir ../save, а затем mv * ../save, чтобы убрать их с пути. Тогда у вас есть пустое текущее рабочее дерево, и git status покажет вам, что все файлы удалены, но не подготовлены для фиксации. Затем вы можете сделать git reset --hard или git checkout -- ., чтобы вернуть все файлы обратно, затем mv ../save/* ., чтобы вернуть сохраненные файлы на место.

В этот момент единственной оставшейся проблемой будет то, что у вашего местного master нет восходящего потока. Чтобы это исправить, просто запустите:

git branch --set-upstream-to=origin/master

и все будет готово.

...