如何将未跟踪的本地文件夹添加到远程Git存储库?

如何将未跟踪的本地文件夹添加到远程Git存储库?,git,version-control,Git,Version Control,我有一个本地文件夹someFolder,它不在Git下,我想以某种方式将此文件夹与远程服务器上的存储库“合并”https://github.com/blah.git在主分支上。在远程服务器上的主分支中,我有一堆文件夹,我希望将本地文件夹添加到顶层 Git的方法是什么 到目前为止,我已将远程git存储库克隆到本地计算机上的其他文件夹中。然后,我手动将本地文件夹someFolder移动到本地签出存储库的顶层,并在上面添加/提交/推送。我觉得应该有一个更简单的方法来做这件事。有什么想法吗 我觉得应该有

我有一个本地文件夹
someFolder
,它不在Git下,我想以某种方式将此文件夹与远程服务器上的存储库“合并”
https://github.com/blah.git
在主分支上。在远程服务器上的主分支中,我有一堆文件夹,我希望将本地文件夹添加到顶层

Git的方法是什么

到目前为止,我已将远程git存储库克隆到本地计算机上的其他文件夹中。然后,我手动将本地文件夹
someFolder
移动到本地签出存储库的顶层,并在上面添加/提交/推送。我觉得应该有一个更简单的方法来做这件事。有什么想法吗

我觉得应该有一个更简单的方法来做这件事。有什么想法吗

不太可能,除非您开始玩
GIT_WORK_TREE
,它允许您将工作树设置到另一个目录(如文件夹的父目录),允许您避免在本地repo中移动该文件夹:

 git clone https://github.com/blah.git 
 cd blah
 git --work-tree=/path/to/parent/folder add yourFolder
 git commit -m "add new folder"
 git push
从:


不过:

收益率:

fatal: pathspec 'testWorkTree/someFolder' did not match any files
我觉得应该有一个更简单的方法来做这件事。有什么想法吗

不太可能,除非您开始玩
GIT_WORK_TREE
,它允许您将工作树设置到另一个目录(如文件夹的父目录),允许您避免在本地repo中移动该文件夹:

 git clone https://github.com/blah.git 
 cd blah
 git --work-tree=/path/to/parent/folder add yourFolder
 git commit -m "add new folder"
 git push
从:


不过:

收益率:

fatal: pathspec 'testWorkTree/someFolder' did not match any files

我觉得你的方式很好。然而,为了演示git的本质和它有多酷,我展示了另一种方法——使用标准
git merge
以某种方式“合并”

我假设您有
localFolder/someFolder

$ cd ..../localFolder
$ git init #yes, we just created a new git repo
$ git add someFolder # obviously, you may have any files and folders, not only one
$ git commit -m "We now have some added"
$ git remote add origin https://github.com/blah.git
$ git fetch
$ git merge origin/master # we are merging 'two repos'
$ git push -u origin master

完成了。看起来没什么特别的-两次回购就像两个分行一样。

我认为你的方式已经足够好了。然而,为了演示git的本质和它有多酷,我展示了另一种方法——使用标准
git merge
以某种方式“合并”

我假设您有
localFolder/someFolder

$ cd ..../localFolder
$ git init #yes, we just created a new git repo
$ git add someFolder # obviously, you may have any files and folders, not only one
$ git commit -m "We now have some added"
$ git remote add origin https://github.com/blah.git
$ git fetch
$ git merge origin/master # we are merging 'two repos'
$ git push -u origin master

完成了。它看起来没什么特别的-两个回购就像两个分支一样。

然而,我认为这样做可能会导致更多的问题,而不是解决问题,因为您指定的
--工作树=…
很可能缺少
git
期望找到的一大堆东西(即项目工作树的整个剩余部分)。不过,我实际上没有太多地干扰外部工作树,所以我可能错了…@twalberg不,这不会是问题,因为您正在添加(或检查的状态)
someFolder
,并且只有
someFolder
。因此我不同意:它可以正常工作。我尝试过这样做,但出于某种原因它不允许我使用父目录。在我的
~/Desktop/
下有
testWorkTree/
someFolder/
其中
testWorkTree
是git.in下的一个目录该目录,如果我尝试
git--work tree=../add someFolder
它会给我一个错误:
fatal:pathspec'testWorkTree/someFolder'不匹配任何文件
如果我做绝对路径:
git--worktree=/Users/me/Desktop/add someFolder
,它仍然会说
fatal:pathspec'testWorkTree/someFolder'不匹配ch any files
。为文件名加引号没有帮助。@DavidT.尝试指定
git dir
。您应该能够从任何路径执行该命令:
git--git dir=/Users/me/Desktop/testWorkTree/.git--worktree=/Users/me/Desktop add someFolder
它实际上仍然不起作用-我收到了相同的错误,但我认为这是一个足够的答案,这样我就可以探索更多关于裸基git回购和工作树的内容,所以我将接受并结束这个问题。谢谢!但是,我认为这样做可能会导致比解决问题更多的问题,因为您指定的
--work tree=…
很可能缺少一个wh
git
希望找到的一堆东西(即项目工作树的整个剩余部分)。不过,我实际上没有太多地干扰外部工作树,所以我可能错了…@twalberg不,这不会是问题,因为您正在添加(或检查工作树的状态)
someFolder
,并且只有
someFolder
。因此我不同意:它可以正常工作。我尝试过这样做,但出于某种原因它不允许我使用父目录。在我的
~/Desktop/
下有
testWorkTree/
someFolder/
其中
testWorkTree
是git.in下的一个目录该目录,如果我尝试
git--work tree=../add someFolder
它会给我一个错误:
fatal:pathspec'testWorkTree/someFolder'不匹配任何文件
如果我做绝对路径:
git--worktree=/Users/me/Desktop/add someFolder
,它仍然会说
fatal:pathspec'testWorkTree/someFolder'不匹配ch any files
。为文件名加引号没有帮助。@DavidT.尝试指定
git dir
。您应该能够从任何路径执行该命令:
git--git dir=/Users/me/Desktop/testWorkTree/.git--worktree=/Users/me/Desktop add someFolder
它实际上仍然不起作用-我收到了相同的错误,但我认为这是一个足够的答案,这样我就可以探索更多关于裸基git回购和工作树的内容,所以我将接受并结束这个问题。谢谢!+1这个答案很容易理解。我以前使用过合并,我有点担心这将是做事情的唯一其他方式,它似乎有点像每年一次:/但是哦,很好。谢谢!+1这个答案很容易理解。我以前使用过合并,我有点担心这是唯一的其他方法,它看起来也有点手动:/但是哦,很好。t