正如我所理解的那样,当你在Git中进行提交时,会对存储库的整个状态进行快照,这样我就可以在必要时返回到该状态。所以,对我来说,提交不代表变更,而是存储库的状态。如果要返回旧状态,可以执行git checkout commit-hash
但是,我不明白当你执行cherry-pick
时会发生什么,因为它只获得该提交所做的更改。
如果提交代表整个存储库的状态,Git如何在cherry-pick
期间获得两次提交之间的区别?
答案 0 :(得分:9)
您的理解是正确的:“提交”是git不是更改(delta),而是代表整个州。但是提交包含的不仅仅是状态:它还有一个指向父提交的指针(通常是一个,但可以是任何数字),即存储库历史记录中的先前提交。
父指针让git找出当前提交与其父级之间的差异。这就是樱桃选择的作用:它计算差异,然后将这些差异应用于当前状态。