我是git的新手,我将所有git仓库都保存在NTFS磁盘中的一个文件夹中,以便Windows和Linux分区都可以看到它。问题在于该文件夹中的可执行文件无法在Linux中被授予执行权限。
对于包含可执行文件的存储库,我一直在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
然后初始化存储库,但出现错误:
$ 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
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/