GIT - 稀疏结账不按预期工作

时间:2016-03-04 21:07:17

标签: git github

我在服务器上签出了一个git repo。 repo曾经在根目录上拥有所有相关文件,但我必须进行一些更改,现在我有两个文件夹,srcdist,我想跟踪它们。

我遇到的问题是,在我的服务器上,如果我拉,我现在必须在dist文件夹中导航才能看到内容。

我试着搜索了一下,我觉得我想做的就是稀疏结账。

我遵循了本教程:http://jasonkarns.com/blog/subdirectory-checkouts-with-git-sparse-checkout/,特别是谈到现有项目的部分,我做了所提到的事情:

  1. ssh进入我的服务器
  2. cd进入项目文件夹
  3. git config core.sparsecheckout true
  4. echo dist />>的.git /信息/稀疏结账
  5. git read-tree -mu HEAD
  6. 但没有任何事情发生。我的意思是,我仍然需要导航到myproject / dist才能看到一些东西。

    我还尝试cat sparse-checkout文件,dist/存在。 我也尝试了git pull origin master,但没有运气。

    我在这里错过了什么吗?

1 个答案:

答案 0 :(得分:3)

你做了应有的一切。

sparse checkout

使用稀疏结账时,您基本上会告诉Git从工作树中排除某组文件。 这些文件仍然是存储库的一部分,但它们不会显示在您的工作目录中。

在内部,稀疏结帐使用 skip-worktree 标记将所有排除的文件标记为始终更新。

 
# enable sparse checkout in an existing repository:
git config core.sparseCheckout true

# Create a .git/info/sparse-checkout file containing the
# paths to include/exclude from your working directory. 

# Update your working directory with 
git read-tree -mu HEAD

enter image description here

另一种可能对您有用的解决方案:

<强> Splitting a subfolder out into a new branch/repository

# use filter-branch to extract only the desired folder into a new branch
# once you done with your work you can always merge it back again.

git filter-branch --prune-empty --subdirectory-filter YOUR_FOLDER_NAME <branch>
# Filter the master branch to your directory and remove empty commits