如何从现有文件树中在git中创建新分支?

时间:2009-12-15 17:42:43

标签: git version-control

我希望将现有的文件树添加到git存储库作为新的分支(我不能只将现有的树复制到我的git树中,因为现有的树是在不同的VCS下版本化的,我正在尝试同步它们。)

这可能吗?

编辑:是否会设置一个新的git存储库,它连接到现有的远程存储库,然后移动生成的.git文件夹?这看起来真的很乱,但如果这样做的话......

5 个答案:

答案 0 :(得分:1)

您可以尝试使用--work-tree=<path>选项来添加来自其他目录的文件,例如:

git --work-tree=/path/to/file add .

答案 1 :(得分:0)

你可以

  • 创建一个新分支(git checkout -b aNewBranch
  • 复制你的树
  • 添加它(git add path/to/new/tree
  • 并提交

但是git下的新树和其他VCS中的新树之间的未来同步必须是手动的:即通过使用diff工具比较两个树并更新/添加/删除这两个目录之间的相关文件


如果您必须保存树所在的位置(在VCS中),您可以:

  • 通过引用其他git
  • 来引用Charles Bayley's answergit add
  • 或仅在您的“其他VCS”树中git init
    • 然后您可以将git repo视为 a submodule (不太简单,但允许您在Git仓库中引用VCS树的精确参考)

答案 2 :(得分:0)

我之前移动了.git文件夹,虽然它已经开始工作了。

我这样做的原因是使用TFS作为“真正的”VCS,但在我自己的机器上使用git - TFS分支实际上只是副本,所以当我在TFS分支中工作时,我只是检查了git中的分支,然后将.git文件夹移动到TFS分支根目录。

答案 3 :(得分:0)

你正在使用哪个VCS?我会四处看看你的VCS是否有一个导入器到Git。

然后切换到新分支(git checkout -b import-branch)并运行导入程序。

答案 4 :(得分:0)

最简单的方法是根据您需要添加新文件的位置创建一个分支,清除索引并添加新文件。

e.g。

git checkout -b newbranch [<option starting sha1>]
git rm -r --cached -- .

cd /other/tree
git --git-dir=/first/tree/.git add .

完成此操作后,您可能希望重置原始位置的工作树。

cd /first/tree
git checkout -- .