Git中的提交是否代表存储库的状态?

use*_*515 6 git commit

正如我所理解的那样,当您在Git中进行提交时,会创建存储库的整个状态的快照,并允许我在必要时返回到该状态.所以,对我来说,提交不代表变更,而是存储库的状态.当你想回到旧州时,你可以做到git checkout commit-hash

但是,我不明白当你这样做时会发生什么cherry-pick,因为它只获得该提交所做的更改.

cherry-pick如果一个提交代表整个存储库的状态,Git如何在两个提交之间获得差异?

Tho*_*mas 9

您的理解是正确的:"提交"是git不是更改(delta),而是表示整个状态.但是提交包含的不仅仅是状态:它还有一个指向父提交的指针(通常是一个,但可以是任何数字),即存储库历史记录中的先前提交.

父指针让git找出当前提交与其父提交之间的差异.这就是樱桃选择的作用:它计算差异,然后将这些差异应用于当前状态.