GIT未跟踪文件

5
我已经在AIX 6.1上安装了GIT,但遇到了问题。
我按照以下步骤进行操作:
  1. 创建一个文件夹。
  2. 进入该文件夹并初始化非裸库。
  3. 初始化用户名和用户电子邮件。
  4. 创建一个名为index.html的文件,并在其中添加一些数据。
  5. 创建一个名为newfolder的子文件夹。
  6. 进入新创建的文件夹。
  7. 创建一个名为index-2.html的文件,并在其中添加一些数据。
完成以上所有步骤后,执行git status命令,结果如下:
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       ../index.html
#       ./

我知道上述目录中的index.html被显示了,但为什么当前目录下的index-2.html没有显示出来呢?应该也会跟踪到index-2.html这个文件才对。
2个回答

9
输出显示有两个当前未跟踪的内容:
  • ../index.html – 父文件夹中的 index.html 文件
  • ./ – 当前文件夹,包括其所有内容
因此,它确实检测到您有一个未跟踪的文件,但由于它对其文件夹一无所知,所以它只显示文件夹以累积其所有内容。
如果您添加了文件并使Git跟踪它们,则它们将正确显示:
git add index-2.html
git add ../index.html

但是我没有在父目录中添加index.html。即使我没有添加该文件,它怎么会出现在列表中呢? - david.colais
状态输出始终相对于您当前的目录。当您进入子文件夹(步骤6)时,index.html现在位于您当前文件夹的父文件夹中。 - poke

3

它正在跟踪文件夹./,这意味着当前文件夹。Git(如果我说错了请纠正),根本不关心子文件夹。这意味着如果您有一个包含文件夹foo的存储库,该文件夹已经在存储库中。您在foo中添加了一个名为bar的子文件夹,并在foo/bar中创建了一个文件foobar.txt。那么您只会得到:

# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       ./bar

这意味着如果在运行git status命令之前,您先执行了cd ..,则会得到以下结果:
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       index.html
#       newfolder

即使您已经有一个文件在里面,也是如此。
这是因为git跟踪的是内容,而不是文件。由于index2.html实际上是newfolder文件夹的内容,而您没有跟踪newfolder,因此git不知道index2.html的存在。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接