如何将新文件/文件夹添加到现有的Github存储库?

时间:2019-06-16 17:36:22

标签: github

我是Github的新手,并且拥有一个基本上一直用于备份我本地存储在Linux计算机上的代码并跟踪我对项目所做的更改的存储库。自从我开始使用Github以来,该项目的结构为:https://github.com/username/Project/tree/master/Folder1。我已经在Folder1的Linux终端中执行了所有的add / commit / push命令,并且运行良好。现在,我试图创建一个Folder2并将其添加到我的项目中。

在Linux中,我复制了Folder1并将其重命名为Folder2。然后,我在Project文件夹中进行了git add Folder2的操作,这似乎可以正常工作,但是随后我在Github存储库中查看了Folder2完全为空。然后,我进入Linux上的Folder2尝试执行添加/提交/推送,但是推送未成功。

当尝试从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 个答案:

答案 0 :(得分:1)

git add完全是本地的(对远程GitHub存储库无影响)

只有commit + push才有效。

git remote -vFolder1中检查您的Folder2,以查看您使用的是哪个URL。
您应该有一个~/.ssh/config文件,该文件有助于参考右键。

如果您要推送到一个 GitHub存储库,则您的本地文件夹应与您想要的目标结构相同,这意味着:

Folder1
Folder2

两个文件夹(一个没有重命名为另一个)


OP添加:

  

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都在同一分支(主服务器)上,但历史记录不同(请检查git log输出)

实现所需目标的最简单方法是采用以下结构:

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