0

如果我暂存一个已更改的文件,然后再对其进行一些更改并重新暂存它,然后提交,我是提交两个更改,还是仅提交净更改?我假设答案是两个,但我在 Git 书中找不到这个。

这是在不想在我的 web.config 文件中提交未加密密码的情况下出现的。我正在构建一个预提交挂钩,用于检查相关部分是否已加密,如果没有,则中止提交。但我已经意识到,如果我只是加密文件并提交(不再暂存它),我仍然会提交未加密的文件。但是如果我重新暂存它然后提交怎么办?我还会提交未加密的数据吗?

4

4 回答 4

1

您只有一个暂存区缓冲区。在暂存区域中没有更改层次结构或时间的概念。

因此,如果您更改文件,暂存它,覆盖以前的更改,重新暂存它。仅提交与先前提交的最终差异。

简而言之,只有您在其中看到的更改才会git diff被提交。

于 2013-10-11T19:29:21.823 回答
1

只是净变化;第一个被第二个版本取代。最终,您将垃圾收集现在不相关的暂存副本。

于 2013-10-11T19:29:44.610 回答
1

假设您在再次暂存文件之前没有移动或重命名文件,那么您只是在提交“净更改”。通过运行,您可以在任何给定时间准确查看暂存区域中的内容git diff --cached

于 2013-10-11T19:30:52.680 回答
0

当你运行 commit 时,git 会拍下你暂存区域的快照,并将它们存储在存储库中。因此,提交的始终是最新的分阶段版本。

于 2013-10-11T23:46:12.193 回答