【问题标题】:How to link two pre-existing and non-empty directories through Git?如何通过 Git 链接两个预先存在的非空目录?
【发布时间】:2021-10-18 23:14:36
【问题描述】:

我正在与一位朋友合作开展一个项目。我们有两种不同的文件结构,但我们共享相同的几个文件,如下所示:

我:

Root ->
    Folder_A ->
        File 1a
        File 2a
    Folder B ->
        File 1b
        File 2b

他:

Root ->
    Folder_A ->
        File 1a
        File 2a
        File 3a
    Folder B (Called something else) ->
        File 1b
        File 2b
    Folder C ->
        File 1c

最终的存储库应该只包含:

Root ->
    Folder A->
        File 1a
    Folder B->
        File 2b

在本例中,我们只需要共享文件夹 1a 和 2b。每个文件都已分别在我们的本地系统上创建。 你可以看到他还有其他不能动的文件,比如文件夹C和文件1c。

我如何设置一个只捕获我们需要的这几个文件而忽略我们两个系统上的所有其他文件的存储库?

我知道.gitignore,问题是我们的两个目录都已经非空了。我不知道如何只同步我们需要的文件而忽略这些目录中的所有其他内容。由于他的文件夹被称为不同的名称,因此这变得更加困难。

谢谢!

【问题讨论】:

  • “我们的目录已经非空”是什么意思?我认为使用.gitignore 没有任何问题。您可以删除缓存文件并提交更改。
  • Git 本身存储——在提交中——only 文件;这些文件的名称至少对您的操作系统意味着应该有一些文件夹。也就是说,Git 可能会存储一个名为path/to/file文件。这不是一个文件夹path 保存一个文件夹to 保存一个名为file 的文件,它是一个名称为path/to/file 的文件,并带有嵌入的正斜杠。请务必记住,Git 提交中的内容不是您在计算机文件夹中存储的文件中看到和编辑的内容。这些文件夹中的文件正是您让 Git 创建 Git 版本的方式。
  • 因此,如果你想让 Git 在下一次提交中存储一个名为 Folder_A/file 1a 的文件,你可以运行 git add "Folder_A/file 1a"(这里的引号通常是必要的,以保护名称,不能很好地与类 Unix 系统配合使用)。这使 Git 在您的操作系统上查找该路径名(将它们视为文件夹和文件),然后在 Git 的 index aka staging area 中创建或更新文件名称带有嵌入的正斜杠。
  • 您的下一个 git commit 获取 Git 索引(暂存区)中的所有文件,并从中进行提交。 index/staging-area 实际上是 Git 不能存储空文件夹的原因:索引格式没有办法做到这一点。 (有些东西非常接近,但如果你尝试以这种方式使用它,Git 会时不时地破坏它。)

标签: git github git-bash collaboration


【解决方案1】:

假设没有远程仓库,首先你和你的朋友基本上需要关注this steps。在第 5 步中,您首先添加您的file 1a(文件夹将自动添加,无需忽略其他任何内容)。推送后,您的朋友可以克隆 repo 并分别添加他的file 2b

【讨论】:

    猜你喜欢
    • 2012-10-06
    • 1970-01-01
    • 1970-01-01
    • 2015-03-03
    • 1970-01-01
    • 2021-09-21
    • 2021-03-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多