我正在编写一个允许使用 Objective-Git 执行基本 git 操作的应用程序,但我无法弄清楚如何“取消暂存”文件。更具体地说,我有一个文件,其中包含先前已添加到当前 GTIndex 的更改,现在我想丢弃这些更改(不会丢失文件在磁盘上的当前状态)。
以下是我的程序在切换文件的“暂存”状态时当前遵循的相关逻辑的粗略概述:
- Fetch current GTIndex using GTRepository.indexWithError:
- Fetch GTIndexEntry for the file using GTIndex.entryWithPath:
- If the file has an index and GTIndexEntry.status == GTIndexEntryStatusUpdated:
- Here's where I'm stuck
根据这个未回答的老问题,我需要在当前 HEAD 中查找文件的信息。在这种情况下,这是我得出的逻辑:
- Fetch head's GTReference using GTRepository.headReferenceWithError:
- If the reference resolves to a GTCommit object:
- Fetch the GTTree using GTCommit.tree
- Fetch the file's GTTreeEntry using GTTree.entryWithPath:error:
- Stuck again! Do I convert GTTreeEntry to GTIndexEntry somehow?
任何指导表示赞赏!如果必须,我不害怕直接跳入 libgit2(这个项目已经需要它一两次),但是由于我在 Swift 中工作,如果可以的话,我想避免它并“取消暂存”文件似乎是一个标准程序,我想我一定不明白 Objective-Git 类是如何联系在一起的。