Как добавить новые файлы / папки в существующий репозиторий Github? - PullRequest
1 голос
/ 16 июня 2019

Я новичок в Github, и у меня есть репозиторий, который я в основном использовал для резервного копирования кода, который я хранил локально на компьютере Linux, и отслеживания изменений, которые я вносил в проект. Структура этого проекта с тех пор, как я начал использовать Github: https://github.com/username/Project/tree/master/Folder1. Я выполнял все свои команды добавления / принятия / нажатия в терминале Linux в Folder1, и это сработало хорошо. Сейчас я пытаюсь создать Folder2 и добавить его в свой проект.

В linux я продублировал Folder1 и переименовал его Folder2. Затем я сделал git add Folder2 в папке Project, которая, кажется, работала нормально, но затем я посмотрел в своем хранилище Github и увидел, что Folder2 полностью пуст. Затем я зашел в Folder2 в Linux, чтобы попытаться выполнить добавление / принятие / отправку, но отправка не удалась

При попытке нажать из папки Folder2 я получаю следующую ошибку: no such identity: (url to id_github-rsa) no such identify: (url to id_github-rsa) Permission denied (public key). fatal Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.

1 Ответ

1 голос
/ 16 июня 2019

A git add является чисто локальным (не влияет на удаленное хранилище GitHub)

Только коммит + толчок будет иметь эффект.

Проверьте свои git remote -v в Folder1 и Folder2, чтобы увидеть, какой URL вы используете.
У вас должен быть файл ~/.ssh/config, который помогает ссылаться на правильную клавишу.

Если вы отправляете в один репозиторий GitHub, то ваши локальные папки должны совпадать с вашей целевой структурой, то есть:

Folder1
Folder2

Две папки (ни одна не переименована в другую)


ОП добавляет:

Когда я запускаю git remote -v в Folder1, я получаю свой результат как:

origin https://github.com/username/Project.git (fetch) 

, тогда как та же команда в Folder 2 дает

origin git@github.com:username/Project.git (fetch) instead. 

Было бы лучше использовать тот же URL:

 cd Folder2
 git remote set-url origin https://github.com/username/Project.git 

Однако было бы также предпочтительнее сохранить Folder2 в своем собственном проекте GitHub, а не пытаться повторно использовать "Project.git"


hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart.

Это ожидается, потому что и Folder1, и Folder2 находятся в одной ветви (master), но с разной историей (проверьте git log output)

Самый простой способ достичь того, что вы хотите - это иметь такую ​​структуру:

cd /local/path/to/

git init myProjects (new empty folder)
git remote add origin https://github.com/<me>/myProjects (new empty repository)
mkdir Folder1
mkdir Folder2
# copy the files to their relevant folders
git add . (from `/local/path/to/myProjects`)
git commit -m "Folder1 and 2"
git push -u origin master

Итак один репозиторий, с одной ветвью (master), но смешанной историей (некоторые коммиты будут для Folder1, или 2, или оба)

Легко восстановить: на новой машине

cd /local/path/to
git clone https://github.com/<me>/myProjects

Чтобы сохранить существующую историю Folder1:

cd /local/path/to
mv Projects Projects.old
mv Projects.old/Folder1 Projects
cd Projects
mkdir Folder1
git mv * Folder1
git add .
git commit -m "Move Folder1"
mkdir Folder2
# copy files into Folder2
git add .
git commit -m "Folder2"
git push
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...