我是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
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是一个有效的存储库,不是吗?我做错了什么?
答案 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 .
将它们结帐到你的工作目录。