linux - git可以跟踪另一个文件夹中的文件吗

标签 linux windows git

我是 git 新手,我将所有 git 存储库保存在 NTFS 磁盘内的一个文件夹中,以便 Windows 和 Linux 分区都可以看到它。问题是该文件夹中的可执行文件在 Linux 中无法被赋予执行权限。

对于包含可执行文件的 repos,我一直在 Linux 分区的目录中工作,以便我可以执行它们,然后一旦我完成编辑它们,我将它们复制回相关的 repo 文件夹以保持版本——控制他们。

旁注(对于 GolezTrol):
当我说可执行文件时,我的意思是,例如,*.cpp*.java文件。如果我想在 NTFS 分区上编译它们,则在尝试运行可执行文件时会出现错误。所以我不能在NTFS文件夹中工作,我必须在Linux分区中工作。例如,考虑 Eclipse 中的工作区文件夹。如果我将它放在 NTFS 文件夹中,我将无法使任何应用程序工作。所以我必须把它移动到Linux分区,编辑我的文件,然后将相关文件复制回NTFS分区的repo文件夹。我不是在跟踪可执行文件,而是在跟踪生成这些可执行文件的文件。我希望这能解决问题。

我想知道是否有办法将这些文件的版本控制保留在它们的 repo 文件夹中,而这些文件位于 Linux 分区中,这样我就不必在完成编辑后将它们复制回来,并且我仍然可以从 Windows 看到它们。类似于位于 repos 文件夹中的可执行文件文件夹的链接,也许(也可以从 Windows 编辑它们可能会很好,就好像它们真的位于 repo 文件夹中一样,但我想那不会可能的)。

我搜索了SO,发现a similar question .我尝试了第一个答案,虽然这不完全是我的目标,但它对我不起作用。我放置了 .git我的可执行文件文件夹中的文件,包含:

gitdir: path/to/repo/in/NTFS/disk/.git

然后初始化 repo,但出现错误:
$ git init
fatal: Not a git repository: path/to/repo/in/NTFS/disk/.git

所以我回到了 repo 文件夹(在 NTFS 磁盘中),做了 git init并回到可执行文件文件夹。现在我得到一个不同的错误:
$ git init
fatal: Invalid gitfile format: path/to/executables/folder

我想我没有理解答案。

关于第二个答案,我也不明白如何实现它。

所以,总结一下,我的问题是... 如何在 Linux 分区的文件夹中拥有可执行文件,但如何从 NTFS 磁盘中的 repo 文件夹对它们进行版本控制?是否可以让 Windows 看到这些文件?

附言我想避免(如果可能)安装或编辑 fstab 文件。

P.S2.这个问题与我链接的问题不同。我想更多的是一种从 repo 文件夹到可执行文件文件夹的链接。从 Windows 中查看文件也很理想。如果这是不可能的,我愿意接受其他答案,因为链接问题中的答案对我不起作用。如果这些答案解决了我的问题,我就不会问这个问题了。

更新:

我的可执行文件目录:
$ tree -L 1 -aF --dirsfirst
.
├── file.txt
└── .git

0 directories, 2 files
  • file.txt 的内容:file
  • .git 的内容:gitdir: /media/admin/DATA/github/af-62/.git

  • 我的 NTFS 目录(即 /media/admin/DATA/github/af-62 ):
    $ tree -L 1 -aF --dirsfirst
    .
    ├── .git/
    ├── .gitignore
    └── LICENSE.md
    
    1 directory, 2 files
    

    (请不要过多关注这些文件,它们现在是占位符文件。)
    -a选项显示 stash 文件,如名称以点开头的文件,以及 --dirsfirst首先显示目录,所以在第一种情况下,.git已结束,而在第二个 .git是在开始。

    在 NTFS 目录中:
    $ git log
    commit f8f7e3bac01f51e5d819a31e28c1a42c181b0407
    Author: private <user@example.com>
    Date:   Wed Jul 15 11:50:44 2015 +0200
    
        First commit.
    
    $ git checkout /path/to/executables/folder/file.txt
    fatal: /path/to/executables/folder/file.txt: '/path/to/executables/folder/file.txt' is outside repository
    

    在可执行文件目录中:
    $ git init
    fatal: Invalid gitfile format: /path/to/executables/folder/.git
    
    $ git checkout file.txt
    fatal: Invalid gitfile format: .git
    
    $ git checkout /media/admin/DATA/github/af-62/LICENSE.md
    fatal: Invalid gitfile format: .git
    

    根据 jvdm 的 linked resource , “[....git 文件...] 它必须指向一个有效的 Git 裸仓库”,但是 /media/admin/DATA/github/af-62/是一个有效的存储库,不是吗?我究竟做错了什么?

    最佳答案

    你需要告诉 git /path/to/executables/folder是工作
    git 存储库的目录 /path/to/repo/in/NTFS/disk/.git , 单程
    去做吧:

    cd /path/to/executables/folder
    echo gitdir: /path/to/repo/in/NTFS/disk/.git > .git
    

    现在请注意 git 状态(如果 /path/to/executables/folder
    空)将显示您的所有文件已删除。那么你也能:
    git checkout .
    

    将它们 checkout 到您的工作目录中。

    关于linux - git可以跟踪另一个文件夹中的文件吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31417221/

    相关文章:

    windows - 从 Windows 上的 Go *net.UDPConn 获取 syscall.Handle?

    c++ - 应用程序无法正确启动(0xc000007b)

    python - 在 Windows 上的 Python 2.x 中从命令行参数读取 Unicode 字符

    javascript - 管理 package.json 的简单方法

    git - 如何删除所有文件 "added by them"?

    windows - 安装 cygwin 后 Git Bash 损坏

    R: install.package() 没有在 CentOS 6.5 上调用编译器

    linux - Git 推送访问从内部/等被拒绝

    php - 在php中找到正确的FFmpeg路径

    linux - torch OSError : [Errno 28] No space left on device