我想更好地理解git是如何工作的。
所以我们有一个工作目录(我们的项目文件),一个临时区域(一组准备好的变化)和一个git存储库(这些更改在提交时应用于这些)。
但是我很难理解,因为看起来文件被“跟踪”或没有引用某些特定的东西,但我们仍然说每个部分都有自己的跟踪形式?
说:
是否正确如果我在工作目录中添加或修改文件,git会检测到所有这些。我们是否说过这些文件被git“跟踪”了?或者他们只是“被发现”(或其他)?是否“跟踪”项目文件夹/工作目录中的所有内容?
git add {directory or filename}
似乎将内容添加到暂存区域,是吗?在这一点上,我们说所有分阶段文件都是“跟踪”文件,那些在我们git ls-files
时显示的文件,我相信这些文件显示在暂存区域中的文件?还是不?
git commit -a
将暂存区域中的所有更改移至存储库。
这是对的吗?
答案 0 :(得分:0)
git add
添加要跟踪的文件以及暂存(当前提交)
git commit -a
如果已经跟踪
Git会在将这些文件添加到repo目录时注意到未跟踪的文件,因为它将它们理解为文件更改。但除非您明确将它们添加到跟踪中,否则它不会跟踪任何更改增量
这个问题可能会对您有所帮助:Concept of git tracking and git staging
另见https://www.howtogit.net/concepts/types-of-changes.html
我认为我们混淆的主要问题是git add
可以做两件事(如果没有,则添加到跟踪和舞台),而git commit -a
只做一件(将跟踪文件添加到舞台)
答案 1 :(得分:0)
- 如果我在工作目录中添加或修改文件,git会检测到所有这些。我们是否说过这些文件被git“跟踪”了?或者他们只是“被发现”(或其他)?项目文件夹/工作目录中的所有内容都“已跟踪”吗?
醇>
Git检测已修改和已删除的文件。如果它们被跟踪(即它们在之前添加并已提交),它们将在git status
的输出中显示为“已修改”。未跟踪的新文件和修改后的文件显示为“未跟踪”。
- 醇>
git add {directory or filename}
似乎将内容添加到暂存区域,是吗?在这一点上,我们说所有分阶段文件都是“跟踪”文件,那些在我们git ls-files
时显示的文件,我相信这些文件显示在暂存区域中的文件?还是不?
暂存区域用于准备下一次提交。你可以说它包含的文件是“被跟踪的”,但它的内容不是永久性的;它可以随时更改。为了让Git真正“跟踪”新文件,您必须提交分阶段更改。
- 醇>
git commit -a
将暂存区域中的所有更改移动到存储库。
git commit
使用暂存内容创建新提交。 git commit -a
自动暂存已更改或删除的跟踪文件,然后运行提交。新文件未添加。
详细了解git commit
以及如何Git records the changes to the repository。