是否可以将多个本地文件夹连接到Github中的一个存储库?

时间:2018-07-16 10:13:44

标签: git github

问题

我有两个具有不同路径的不同文件夹,我想将它们链接到同一存储库。出于说明目的,两个不同的文件夹是

Folder 1: C:\Users\Tea\Desktop\Automated
Folder 2: C:\Users\Tea\Documents

文件夹1最初是链接到我的存储库的,但是我也想将文件夹2链接到存储库,这样我也可以从那里推送文件。

这就是我尝试过的

git init
git add NewFolder
git commit -m "web automation basics"
git remote set-url origin --push --add http://github.com/<my username and repository> 

最后一行是根据这篇文章完成的:pull/push from multiple remote locations

但是,我在执行操作时收到错误消息

git push origin master

请我进行git fetch。更具体地说,它写道:

! [ rejected ] master -> master(fetch first)
error: failed to push some refs to 'https://github.com/...'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull...') before pushing again

所以我做了git pull origin master却收到了这些消息

hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

我尝试合并但得到

fatal: refusing to merge unrelated histories

所以我决定这样做

git push -f origin <branch>

根据Cannot push to GitHub - keeps saying need merge 不知道“丢失所有提交”是什么意思(我认为这只是意味着当前的提交消息将丢失)。

事实证明,这对我来说是一个错误的决定,因为我链接到git存储库的新文件夹只是完全替换了旧的git存储库(即所有旧文件现在都消失了)。

那么有什么方法可以将两个单独的文件夹链接到一个Github存储库,而不必合并它们呢?预先感谢!

3 个答案:

答案 0 :(得分:3)

  

我有两个具有不同路径的不同文件夹,我想链接   它们到同一存储库。出于说明目的...那么有没有办法将两个单独的文件夹链接到一个Github存储库,最好不必合并它们?

Tl; Dr

否,GIT无法像这样工作。您可以将一个链接到单个远程,不能将多个本地存储库链接到一个远程。


git init
git add NewFolder
git commit -m "web automation basics"
git remote set-url origin --push --add http://github.com/<my username and repository>
  • git init创建一个新的仓库
  • 然后添加一些东西
  • 并将其链接到远程
  

git push origin master   但是,我收到一条错误消息...要求我进行git pull

然后,您尝试将其推送到您的远程服务器,但是该远程服务器已经链接到另一个存储库,因此GIT认为您的本地存在冲突,因为它们并不相同。

  

所以我做了git pull origin master并得到了这些消息

hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

因此,您现在尝试了一次拉动,GIT拒绝了它,因为我们两个完全不同的回购协议。您尝试合并,但是(显然)失败了,因为它们没有共同点。

  

所以我决定这样做

git push -f origin <branch>

这时,您基本上用本地副本覆盖了遥控器(-f是强制标志,您将更改强制到存储库上,而忽略了冲突等)。因此将进行一次提交,删除存储库中的所有内容,并添加第二个存储库中的所有内容。

答案 1 :(得分:0)

尝试一下: 使用C:\ Users \ Tea文件夹作为存储库,然后.gitignore删除与项目无关的所有子文件夹。

答案 2 :(得分:0)

是,可能!

我在许多项目中都使用Symlink。这是一个很好的“把戏”。

  • 在任何地方创建/签出主存储库文件夹。
  • 然后在其中创建.../any_path/Folder1.../another-path/Folder2硬符号链接

仅此而已。这样,您可以在本地存储库中组合不同的路径/文件夹(请记住,它们将是原始文件夹的镜像)。