gpt4 book ai didi

git - 对已添加 git 的文件进行更改,然后 git committed 似乎工作正常

转载 作者:太空狗 更新时间:2023-10-29 14:35:33 26 4
gpt4 key购买 nike

我终于开始学习git了,我有点迷茫。根据我所阅读的内容,可能会被误解,你必须在对文件进行更改(将文件本地保存在你的ide中?)之后“git add”然后“git committing”。

当我在工作目录中“git add”我的所有文件,进行更改并将它们保存在ide中,然后“git commit”时,所有的更改都很好地提交了。为什么我需要在保存和提交之间使用“git add”重新暂存?它似乎没有任何区别,我很困惑为什么我读过你需要考虑到它似乎没有任何区别。抱歉,如果这是重复的,我确实看过但找不到问题的答案。

哦,如果我正在制作一个新文件,我会理解,因为这需要用“git add”添加,因为它是未知的,但我不明白我什么时候更改文件我已添加。

我对此的测试是运行“git add”更改文件并保存它,尝试提交以查看它是否在没有新的“git add”的情况下注册更改,它会输出一条消息通知更改我取得了。在我的理解中,我一定遗漏了一些东西。感谢您的帮助。

最佳答案

有些 IDE 执行 git add为你。你的可能是其中之一——我们无法判断,因为你没有给它命名。

一些 IDE git add为你。在这种情况下,您必须自己动手。

Oh also, I would understand if I were making a new file, as this would need to be added with "git add" as it isn't already known, but I don't understand when I'm changing files I've already added.

在我看来,您的心智模型与 Mercurial 的实际模型相匹配。在 Mercurial 中,你使用 hg add告诉 Mercurial:这个文件应该提交。 从那时起,hg commit在你的工作树中使用那个文件的版本来进行新的提交。

(工作树是你工作的地方。这与提交相反,提交是只读的:你实际上不能更改存储在提交中的文件。它们通常也被高度压缩,并且在一种仅对版本控制系统有用的表单。在 Mercurial 和 Git 中都是如此。)

Git 不同于 Mercurial。当 Git 进行新提交时,Git 不使用工作树中的内容。 Git 而是使用它调用的东西,不同的(取决于调用者),索引暂存区,甚至缓存。对于任何使用过 Mercurial 或几乎所有其他版本控制系统的人来说,这种特殊策略似乎古怪而疯狂,但这就是 Git 的工作方式。

当 Git 提取 一个提交时,它将提交的内容复制到索引工作树中。索引中每个文件的版本与提交中存储的只读版本相匹配;但是索引中的副本可以被覆盖。然后 Git 使用索引副本(现在与提交的副本匹配)以正常的未压缩格式制作工作树副本,以便您可以使用它。

当你运行 git add <em>file</em> , Git 将正常的、未压缩的工作树文件复制回索引(也称为暂存区)。 替换该文件的先前版本,并且git commit将提交索引版本,该版本现在与工作树版本匹配。

因为 Git 从 index 中的任何内容进行提交,您或您的 IDE 必须不断地将工作树中所做的任何修改复制到索引中。索引版本已经是特殊的、仅限 Git 的压缩格式这一事实使得 git commit速度非常快——以需要所有这些额外的复制步骤为代价。在包含大量文件的大型存储库中,这实际上产生了巨大的差异:hg commit git commit 可能需要几乎是瞬时的。

(在小型存储库中,Git 的奇特之处大多令人讨厌。但是,您可以对索引玩一些特殊的技巧,以便提交与之前提交、中的内容不同的内容工作树!这在某些情况下实际上非常有用。它也非常令人困惑,如果可以避免的话,不要随便做。)

关于git - 对已添加 git 的文件进行更改,然后 git committed 似乎工作正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51145932/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com