我有一个不在Git下的本地文件夹someFolder
,我想以某种方式“合并”此文件夹与主分支上远程服务器https://github.com/blah.git
上的存储库。在我的远程服务器上的主分支中,我有一堆文件夹,我希望我的本地文件夹添加到顶层。
Git的做法是什么?
到目前为止,我将远程git存储库克隆到本地计算机上的其他文件夹中。然后,我手动将我的本地文件夹someFolder
移动到我本地检出的存储库的顶层,并添加/ committed / push。我觉得必须有更多的Git方法来做到这一点。任何想法?
答案 0 :(得分:3)
我认为你的方式已经足够好了。然而,为了展示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
完成。它看起来没什么特别的 - 两个回购就像两个纯粹的分支一样。
答案 1 :(得分:1)
我觉得必须有更多的Git方法来做到这一点。任何想法?
不是真的,除非你开始玩GIT_WORK_TREE
,这允许你将工作树设置到另一个目录(比如文件夹的父目录),允许你避免在你的文件夹中移动当地回购:
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
来自git man page:
--work-tree=<path>
设置工作树的路径 它可以是绝对路径或相对于当前工作目录的路径 这也可以通过设置
GIT_WORK_TREE
环境变量和core.worktree
配置变量来控制。
如果你必须在你的回购中定期添加该文件夹的更改,那么这可以派上用场。
您可以使用:
git --work-tree=/path/to/parent/folder status -- yourFolder
git --git-dir=/Users/me/Desktop/testWorkTree/.git --work-tree=/Users/me/Desktop add someFolder
的产率:
fatal: pathspec 'testWorkTree/someFolder' did not match any files