Как преобразовать существующий непустой каталог в рабочий каталог Git и отправить файлы в удаленный репозиторий

644
  1. У меня есть непустой каталог (например, / etc / что-то) с файлами, которые нельзя переименовать, переместить или удалить.

  2. Я хочу проверить этот каталог в git на месте.

  3. Я хочу иметь возможность отправить состояние этого репозитория в удаленный репозиторий (на другой машине), используя «git push» или что-то подобное.

Это тривиально, используя Subversion (в настоящее время мы делаем это, используя Subversion), используя:

svn mkdir <url> -m <msg>
cd <localdir>
svn co <url> .
svn add <files etc>
svn commit -m <msg>

Что такое мерзавец эквивалент?

Могу ли я "git clone" в пустой каталог и просто переместить каталог .git, и все будет работать?

ВММ
источник
5
Может быть, я просто не понимаю, но вы не можете просто запустить git initвнутри локального каталога?
Филипп
Вы имеете в виду, что у вас есть репо в другом месте, и вы хотите добавить к этому репо все содержимое этого другого каталога, который не является репо? Или вы просто пытаетесь создать новый репо в этом каталоге?
Каскабель
В ряде ответов упоминается github, но сам вопрос касается git. github - это не git, и это не центр вселенной git.
vfclists

Ответы:

1056

Учитывая, что вы создали демон git <url>и пустой репозиторий:

cd <localdir>
git init
git add .
git commit -m 'message'
git remote add origin <url>
git push -u origin master
abyx
источник
12
Инструкция Abyx, кажется, работает. Запускаю ли я сейчас: git config branch.master.remote originи git config branch.master.merge refs/heads/master то, что я получу в итоге, будет точно таким же, как если бы я клонировал удаленный репозиторий? т.е. git pullи простоgit push будет работать ?
HMW
35
Это сработало и для меня. Я должен был сначала создать проект AppNameв GitHub. Мне не было ясно, какие именно <url>средства. Так что для тех, у кого тот же вопрос, мы просто используем GitHub.com, мы не запускаем репо, и тогда то, <url>что использовалось в 5-й строке, выглядело примерно так:https://github.com/CompanyName/AppName
Барт
12
Если вы настраиваете репозиторий, которого нет в GitHub, обязательно используйте «git --bare init» для настройки пустого удаленного репозитория, а не «git init» (как я), иначе push-уведомление завершится неудачно.
jdusbabek
3
Просто хотел добавить, что я не мог нажать, пока я не сделал: git pull --rebase
Artemix
6
Если git отклоняет, потому что remote содержит некоторые незначительные изменения (.README, .gitignore и т. Д.), Попробуйте git pull origin master --allow-unrelated-historiesвыполнить слияние.
Карлисуп
80

Это как я. Я добавил объяснение, чтобы понять, что, черт возьми, происходит.

Инициализировать локальный репозиторий

  • сначала инициализировать Git с

    мерзавец

  • Добавить все файлы для контроля версий с

    мерзавец добавить.

  • Создать коммит с сообщением на ваш выбор

    git commit -m 'AddingBaseCode'

Инициализация удаленного репозитория

  • Создайте проект на GitHub и скопируйте URL вашего проекта. как показано ниже:

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

Связь удаленного репо с локальным репо

  • Теперь используйте скопированный URL для связи вашего локального репо с удаленным репозиторием GitHub. Когда вы клонируете репозиторий с помощью git clone, он автоматически создает удаленное соединение с именем origin, указывающее обратно на клонированный репозиторий. Команда remote используется для управления множеством отслеживаемых репозиториев.

    git remote добавить источник https://github.com/hiteshsahu/Hodium-Word.git

Синхронизировать

  • Теперь нам нужно объединить локальный код с удаленным кодом. Этот шаг очень важен, иначе мы не сможем отправить код на GitHub. Вы должны вызвать 'git pull' перед отправкой кода.

    мастер происхождения git pull - мелкие-не связанные истории

Зафиксируйте свой код

  • Напоследок перенеси все изменения на GitHub

    git push -u мастер оригинала

Хите саху
источник
1
Я выполнил "git pull", как описано в этом посте, и получил ошибку. Я продолжил с «git push», который был принят, и когда я перехожу на Bonito Git Server, я теперь вижу изменения. Спасибо за этот пост с четкими пояснениями по команде GIT.
Шлебе
Что это значит: «и скопируйте URL-адрес вашего проекта и скопируйте URL-адрес проекта». Это опечатка, или вы пытаетесь говорить о двух разных URL-адресах, или?
gwideman
То в типографии ошибки, просто скопировать URL проекта , как показано на снимке экрана
Hitesh Sahu
2
Это правильный ответ и должен быть принят. В принятом ответе отсутствует ваш шаг «Синхронизировать».
Илан
28

Вот мое решение:

git init
git remote add origin PATH/TO/REPO
git fetch
git checkout -t origin/master
csomakk
источник
Хорошее решение, когда вы настраиваете удаленное репо с .gitignore&README.dm
Hattori Hanzō
12

В случае, если удаленный репозиторий не пуст (в этом случае вы используете IBM DevOps на hub.jazz.net), вам необходимо использовать следующую последовательность:

cd <localDir>
git init
git add -A .
git pull <url> master
git commit -m "message"
git remote add origin <url>
git push

РЕДАКТИРОВАТЬ 30 января 17: Пожалуйста, смотрите комментарии ниже, убедитесь, что вы находитесь на правильном репо!

Ромео Кинцлер
источник
Приведенные выше команды стерли все мои существующие сборки :( Пожалуйста, соблюдайте осторожность перед выполнением вышеуказанных шагов
Selenium Framework
7

Когда репозиторий github не пустой, как .gitignore и лицензия

Используйте pull --allow-unrelated-history, а push --force-with-lease

Используйте команды

git init
git add .
git commit -m "initial commit"
git remote add origin https://github.com/...
git pull origin master --allow-unrelated-histories
git push --force-with-lease
Себастьян Оскар Лопес
источник
1
Мне нужно было изменить это последнее утверждение, чтобы оно больше походило наgit push -u origin master --force-with-lease
cfont
2

Простейший способ сделать это, который я считаю полезным, ниже.

Это не может быть официальным способом, но это работает хорошо.

Предположим, у вас есть проект с именем " XYZ" на вашем ПК. Теперь вы хотите сделать git-репо этого проекта на github и использовать его функциональные возможности.

Шаг 1 : перейти к « www.github.com»

Шаг 2 : создайте репозиторий с README.mdфайлом " " (назовите его так, как вам нравится)

Шаг 3 : клонируйте репозиторий на ваш компьютер.

Шаг 4 : В клонированной папке вы получите две вещи: " .git" папка и "README.md " файл. Скопируйте эти два в папку вашего проекта " XYZ".

Шаг 5 : Удалить клонированный репо.

Шаг 6 : добавьте, передайте и отправьте все файлы и папки вашего проекта.

Теперь вы можете просто использовать свой проект " XYZ" в качестве git-репозитория.

гениальность
источник
0

У меня была аналогичная проблема. Я создал новый репозиторий, а не в каталоге, который я хотел создать . Затем я скопировал созданные файлы в каталог, который хотел создать в качестве хранилища. Затем откройте существующее хранилище, используя каталог, в который я только что скопировал файлы.

ПРИМЕЧАНИЕ: я использовал рабочий стол github для создания и открытия выходящего репозитория.

tpage
источник
0

Вот мое решение, если вы создали репозиторий с некоторыми значениями по умолчанию readme fileилиlicense

git init
git add -A
git commit -m "initial commit"   
git remote add origin https://<git-userName>@github.com/xyz.git //Add your username so it will avoid asking username each time before you push your code
git fetch
git pull https://github.com/xyz.git <branch>
git push origin <branch> 
Хариш Картик
источник