git:使工作树只反映整个树的一个子路径

git:使工作树只反映整个树的一个子路径,git,Git,我想签出整个分支,但只在该分支的特定目录中工作。因此,我想“深入”整个树,让我的工作树只反映我选择的子目录。例如: "master" tree dir1/ file1 file2 dir2/ file3 work-dir tree .git file1 file2 我猜是这样做的: git checkout master:dir1/ 但是,这不起作用并报告错误: fatal: Cannot switch branch to a non-commi

我想签出整个分支,但只在该分支的特定目录中工作。因此,我想“深入”整个树,让我的工作树只反映我选择的子目录。例如:

"master" tree
  dir1/
    file1
    file2
  dir2/
    file3

work-dir tree
  .git
  file1
  file2
我猜是这样做的:

git checkout master:dir1/
但是,这不起作用并报告错误:

fatal: Cannot switch branch to a non-commit 'master:dir1/'
这可能吗


注意:我不想使用子模块,因为我不想将我的回购协议分割成不相关的部分。据我所知,子树合并只能帮助我同步两个结构相似但历史记录不同的独立目录。我想修改repo中的原始对象,并能够前后合并它们并保留所有历史记录。

这是不可能的。但是,您可以使用
cddir1
,git仍然可以在那里工作,允许您使用
gitdaddfile1
而不是
gitdadddir1/file1
等。我感谢您的建议,但我确实需要将子路径内容放在我的工作目录的根目录下。我接受git做不到这一点,并将尝试以其他方式解决它。谢谢。