如何将未跟踪的本地文件夹添加到远程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=…
很可能缺少一个whgit
希望找到的一堆东西(即项目工作树的整个剩余部分)。不过,我实际上没有太多地干扰外部工作树,所以我可能错了…@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