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

时间:2013-08-02 18:11:44

标签: git version-control

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

Git的做法是什么?

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

2 个答案:

答案 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

OP David.T reports虽然:

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

的产率:

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