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

如何从现有文件树在git中创建新分支?,git,version-control,Git,Version Control,我希望将现有的文件树作为新的分支添加到git存储库中(我不能将现有的树复制到我的git树中,因为现有的树是在不同的VCS下进行版本控制的,我正在尝试将它们同步) 这可能吗 编辑:设置一个连接到现有远程存储库的新git存储库,然后移动生成的.git文件夹是否有效?这似乎真的有点骇人听闻,但如果这样做的话…你可以 创建一个新分支(git checkout-b aNewBranch) 复制你的树 添加它(git add path/to/new/tree) 并承诺 但是,git下的新树与其他VCS中

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

这可能吗

编辑:设置一个连接到现有远程存储库的新git存储库,然后移动生成的.git文件夹是否有效?这似乎真的有点骇人听闻,但如果这样做的话…

你可以

  • 创建一个新分支(
    git checkout-b aNewBranch
  • 复制你的树
  • 添加它(
    git add path/to/new/tree
  • 并承诺
但是,git下的新树与其他VCS中的树之间的未来同步必须是手动的:即,使用diff工具比较两棵树,并更新/添加/删除这两个目录之间的相关文件


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

  • 参考并通过参考其他git添加
  • 或者只在“其他VCS”树中
    git init
      <> LI>您可以考虑Git RePo为<强> (不太简单,但允许您在Git RePo中引用VCS树的精确引用)
    • 你可以

      • 创建一个新分支(
        git checkout-b aNewBranch
      • 复制你的树
      • 添加它(
        git add path/to/new/tree
      • 并承诺
      但是,git下的新树与其他VCS中的树之间的未来同步必须是手动的:即,使用diff工具比较两棵树,并更新/添加/删除这两个目录之间的相关文件


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

      • 参考并通过参考其他git添加
      • 或者只在“其他VCS”树中
        git init
          <> LI>您可以考虑Git RePo为<强> (不太简单,但允许您在Git RePo中引用VCS树的精确引用)

      我曾经移动过.git文件夹,而hackish确实有效


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

      我之前移动过.git文件夹,而hackish确实有效


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

      您使用的是哪种VCS?我会四处看看,看看是否有从你们的风投到Git的进口商


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

      您使用的是哪些VCS?我会四处看看,看看是否有从你们的风投到Git的进口商


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

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

      e、 g


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

      e、 g

      您可以尝试使用git的
      --work tree=
      选项从其他目录添加文件,例如:

      git --work-tree=/path/to/file add .
      
      您可以尝试使用git的
      --work tree=
      选项从其他目录添加文件,例如:

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

      我不能做的就是复制这棵树。我需要找到一种方法将树添加到它所在的位置。设置一个连接到现有远程存储库的新git存储库,然后移动生成的.git文件夹是否可行?我确实有工具来处理存储库的差异化和同步(我手动更新非git VCS,并提交到git,我有一个脚本,可以确定哪些文件在git中更改,然后将它们签出并提交到其他VCS)我不能做的部分是复制树。我需要找到一种方法将树添加到它所在的位置。设置一个连接到现有远程存储库的新git存储库,然后移动生成的.git文件夹是否有效?我确实有工具来处理存储库的差异和同步(我手动更新非git VCS,并提交到git,我有一个脚本,可以确定哪些文件在git中更改,然后将它们签出并提交到其他VCS)当你提交那棵树时,这仍然会显示出虚假的亲子关系。@Randal Schwartz:我不太清楚你的意思?我对原始问题的理解是,替代树在文件系统的其他地方,代表同一个项目,尽管处于不同的状态,在不同的版本控制下。因为这个git ca不会自动选择适当的父提交,这必须由用户决定。我在参与的一个项目上执行我描述的操作的原因完全相同。我有责任将正确的树导入到正确的分支,但分支跟踪对我来说非常有效。这仍然会显示fal“当你提交那棵树的时候,你的父母是谁。@兰德尔·施瓦茨:我不太清楚你的意思?我对原始问题的理解是,替代树在文件系统的其他地方,代表着同一个项目,尽管处于不同的状态,在不同的版本控制下。因此git不能自动选择ap。”适当的父提交,这必须由用户决定。我执行上面描述的操作
      git --work-tree=/path/to/file add .