我是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.
答案 0 :(得分:1)
git add
完全是本地的(对远程GitHub存储库无影响)
只有commit + push才有效。
在git remote -v
和Folder1
中检查您的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