什么'git commit'在stdout上显示'创建模式......'时的意思?

Joh*_*ahh 33 filesystems git metadata

编辑:

请参阅Danny Lin的git-store-meta作为下面描述的版本控制元数据问题的建议解决方案.我还没有测试它在2015-05-13.

原始问题:

输出中的create|delete mode ...git commit(下面的示例)是否代表某种元数据控制?(和/或,这些线通常代表什么?)这些似乎是类似unix的文件 - 权限代码/表示,虽然我不确定 - 确切地说 - 映射,但更大的问题是:如果有什么做的话git 这些代码/设置/值?git是否试图以任何方式利用这些保存的代码来证明有助于解决元数据问题我的superuser.com问题["如何重用/扩展etckeeper的元数据引擎,用于git控制非/ etc文件系统,或者使用所述功能本地扩展git ?"(https://superuser.com/questions/367729/how-to-reuse-extend- etckeepers-metadata-engine-for-git-control-of-non-etc-file)?我知道git不能控制所有文件系统元数据.

[Git显然已经控制了文件的"可执行属性/ perm"(对于大多数操作系统来说显然是可移植的)以及其他一些文件系统链接.我正在寻找更多/所有元数据的更多Unix/Linux/BSD/DarwinMacOSX特定控制机制,即所有权限和用户/组所有权.ACL和其他元数据控制可选.试图查看git 当前存储的东西是否有助于解决这个问题.]

root@node1 Dec 15 09:40:45 ~/.../sandbox-1# git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   modified:   README
#   new file:   dummy-file-will-be-removed
#   deleted:    ownerfile
#
root@node1 Dec 15 09:40:45 ~/.../sandbox-1# git commit -m "testing git"
[master c5b0201] testing git
 2 files changed, 1 insertions(+), 2 deletions(-)
 create mode 100644 dummy-file-will-be-removed
 delete mode 100644 ownerfile
root@node1 Dec 15 09:41:55 ~/.../sandbox-1# 
[...]
root@node1 Dec 15 11:33:11 ~# git --version
git version 1.7.4.1
root@node1 Dec 15 11:33:14 ~# 
Run Code Online (Sandbox Code Playgroud)

Dan*_*ruz 23

有关Git模式的更多信息,请参阅此答案.

Git存储文件元数据的能力仅限于一个简单的信息子集,以允许Git跟踪一些基本的文件系统更改,从而允许Git跟踪源代码管理的相关更改; 例如文件是否已被修改以及文件是常规文件还是可执行文件.

Git不会尝试实现文件系统的任何概念,而是将文件系统例程留给实际的文件系统实现.无论是在运行于Linux,MacOS,Windows等的FAT32,NTFS,EXT3,XFS,NFS等文件系统上,这都允许Git同等工作.


pat*_*yts 7

这些是作为unix样式权限值的文件权限.它们以八进制打印并表示3位的簇,用于读取,写入和执行.如果你看一下git中的一个树对象(例如:),git ls-tree HEAD你可以看到关于目录内容的所有git记录.这是树包含具有权限位的树和blob

C:\project>git ls-tree HEAD
100644 blob 66f3f25c8ca9ae73b99669aca6ba5ecfa4703b2b    .gitignore
100644 blob 60b88ac20b8b7cccdcd856e65415a9eb9495b63a    Makefile
040000 tree e1d9381e4d12effea7e33f8d7e2b16e372f67b51    demos
100644 blob a60e08eeb9f75160ae2bf6a9feeff3c1c75bfc1d    doxygen.cfg
Run Code Online (Sandbox Code Playgroud)

6表示读写,4表示只读.

  • 值得一提的是,“ 644”不一定是给定文件的实际unix权限:具有664和600权限的文件将在git中存储为644。 (2认同)
  • &lt;需要引用&gt;——不是说你错了。我刚刚尝试在 Linux 上使用 git 1.8.0.1,实际上我添加的 0600 文件在 git 树中显示为 0644。这可能是一个错误,也可能是设计使然。 (2认同)