1

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

这样做的 Git 方法是什么?

到目前为止,我将远程 git 存储库克隆到本地计算机上的其他文件夹中。然后,我手动将本地文件夹移动someFolder到本地签出存储库的顶层,并添加/提交/推送。我觉得必须有更多的 Git 方式来做到这一点。有任何想法吗?

4

2 回答 2

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

完毕。它看起来没什么特别的 - 两个 repos 就像两个分支一样。

于 2013-08-02T19:43:37.147 回答
2

我觉得必须有更多的 Git 方式来做到这一点。有任何想法吗?

不是真的,除非您开始使用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

git 手册页

--work-tree=<path>

设置工作树的路径。
它可以是绝对路径或相对于当前工作目录的路径。
这也可以通过设置GIT_WORK_TREE环境变量和core.worktree配置变量来控制。

如果您必须从您的存储库中的该文件夹中定期添加更改,这可能会派上用场。
您可以检查任何更改(再次不必在本地存储库中复制所述文件夹),使用:

     git --work-tree=/path/to/parent/folder status -- yourFolder

不过,OP David.T 报告

git --git-dir=/Users/me/Desktop/testWorkTree/.git --work-tree=/Users/me/Desktop add someFolder

产量:

fatal: pathspec 'testWorkTree/someFolder' did not match any files
于 2013-08-02T18:37:26.933 回答