可以git跟踪另一个文件夹

时间:2015-07-14 20:57:32

标签: linux windows git

我是git的新手,我将所有git repos保存在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并回到了executables文件夹。现在我得到了一个不同的错误:

$ git init
fatal: Invalid gitfile format: path/to/executables/folder

我想我不明白答案。

关于第二个答案,我无法理解如何实现它。

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

P.S。我想避免(如果可能的话)进入安装或编辑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选项显示隐藏文件,名称以点开头,--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裸存储库”,但是{{1是一个有效的存储库,不是吗?我做错了什么?

1 个答案:

答案 0 :(得分:0)

你需要告诉git /path/to/executables/folder是有效的 单向存储库/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 .

将它们结帐到你的工作目录。