【发布时间】:2017-01-03 04:53:16
【问题描述】:
我现在正在尝试学习 Git; git 命令行应用程序(以下简称“Git”)以及 NetBeans 中的 Git 集成(以下简称“NetBeans”)。据我所知,只有在 NetBeans 中执行的一些操作实际上会显示在 Git 中。就好像 NetBeans 有自己独立的暂存区(又名:索引)和内置的 .gitignore 文件。
例如:当我第一次在我的项目文件夹中初始化存储库时,命令行中的 git status 会给我:
D:\Dev\Learning\Experiments\StupidLoopPrinter>git status
On branch master
Initial commit
Untracked files:
(use "git add <file>..." to include in what will be committed)
build.xml
build/
manifest.mf
nbproject/
src/
nothing added to commit but untracked files present (use "git add" to track)
但是,当我在 NetBeans 中打开查看/显示版本控制标签,然后查看 NetBeans 中的文件树时,我看到许多文件被标记为“已添加”,而其他文件被标记为“已忽略”(即使当我将鼠标悬停在树中的文件名上时,项目文件夹中没有 .gitignore 文件。
然而,当我右键单击我的项目节点然后选择 Git / Show Changes(奇怪的是在 Team 菜单下不可用)时,在 NetBeans 窗口底部打开的窗格没有显示任何“Changes between HEAD 和 Index,”本质上告诉我与 git status 命令相同的内容。
所以,我在 NetBeans 中右键单击了我的一个 .java 文件并选择了 Git/Add。现在我的 git 状态显示:
D:\Dev\Learning\Experiments\StupidLoopPrinter>git status
On branch master
Initial commit
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: src/StupidLoopPrinter.java
Untracked files:
(use "git add <file>..." to include in what will be committed)
build.xml
build/
manifest.mf
nbproject/
... StupidLoopPrinter.java 出现在“HEAD 和索引之间的变化”中。
仔细检查 NetBeans 文件树中所有文件右侧的标记后,我发现 StupidLoopPrinter.java 文件旁边有一个 [A/-],而所有其他文件都有一个 [- /A] 在他们旁边。这种差异有什么意义? (你可以想象,这在谷歌上是不可能的。)
最后:为什么 NetBeans 将文件显示为“已添加”或“已忽略”,而 git status 仅将文件显示为既未添加也未忽略?实际上,NetBeans 是否保留自己的内部忽略列表和暂存区?如果是这样,为什么没有记录在案?
================= 更新================ 我通过在 NetBeans 菜单中选择 Team/Commit 运行了提交。正如预测的那样,就 git 命令而言,这确实改变了阶段。 git status 给我:
D:\Dev\Learning\Experiments\StupidLoopPrinter>git status
On branch Alice
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: src/StupidLoopPrinter.java
Untracked files:
(use "git add <file>..." to include in what will be committed)
build/
nbproject/private/
no changes added to commit (use "git add" and/or "git commit -a")
请注意,上面显示为“未跟踪”的几个文件在此处未显示为“未跟踪”。但是,NetBeans 没有创建 .gitignore 文件。
【问题讨论】:
-
您最初在 NetBeans 中看到的可能是一次性的。我不知道插件,但它应该反映 Git bash 命令行工具向您显示的内容。
-
@TimBiegeleisen - 不。我已退出 Netbeans 并重新启动。一切都还是一样。现在,我怀疑如果我使用 NetBeans 进行提交,那么它可能会修改 git 暂存区域并创建一个 .gitignore 文件以匹配 NetBeans 在界面中显示的内容。但是,我想一次迈出这一步。我的目标不仅仅是能够进行提交。我希望能够确切地知道 NetBeans 正在做什么,以便我可以写下它来教其他人并帮助他们避免这些陷阱。我会尝试那个实验并做更多的 cmets。