代码之家  ›  专栏  ›  技术社区  ›  Tom

Bug还是feature?被符号链接替换的路径被git“遗忘”

git
  •  0
  • Tom  · 技术社区  · 14 年前

    我在这里看到了一些关于符号链接的问题的答案,但是我仍然对这个问题感到困惑。

    假设我已经将目录添加到git存储库中,然后用同名的符号链接替换了该目录。这些文件“仍然在那里”,即它们仍然具有通过符号链接的相同路径。但是,由于git不遵循链接,这些文件表面上被遗忘/删除。但是,当我运行“git status”时,没有提到这一点

    我很高兴地工作,以为没有什么错,直到我意识到文件被认为是删除运行“git diff”

    因此,我有两个问题:有没有一个原因,文件不会出现在“git状态”作为删除或移动?另外,如何重新添加文件?

    
    $ git init
    $ mkdir path
    $ touch path/file
    $ git add path
    $ git commit -a -m "added file"
    
    

    然后。。。

    
    $ git status
    # On branch master
    nothing to commit (working directory clean)
    
    

    然后。。。

    
    $ mv path path2
    $ ln -s path2 path
    $ git status
    # On branch master
    # Untracked files:
    #   (use "git add ..." to include in what will be committed)
    #
    #   path
    #   path2/
    nothing added to commit but untracked files present (use "git add" to track)
    
    

    
    $ git diff
    diff --git a/path/file b/path/file
    deleted file mode 100644
    index e69de29..0000000
    
    
    

    谢谢!

    2 回复  |  直到 14 年前
        1
  •  1
  •   Cascabel    14 年前

    我得说这很明显是个错误。大概吧 status diff ,所以它不小心看到 path/file 却没有意识到它在一个链接后面。它可以处理目录->常规文件更改,如果符号链接 指向一个包含适当文件的目录,所以它只是这个特定的情况。接得好!您可能想向git邮件列表报告它(git@vger.kernel.org),

        2
  •  0
  •   Jed Schneider    14 年前