我对Git文件状态生命周期的理解是否正确?
Git文件状态生命周期理解与验证
Git文件状态的生命周期曾困扰我很久,我反复查阅《Pro Git》里的相关内容来梳理逻辑,但没看懂书中的流程图,于是自己画了一张Git文件状态流转流程图。
我的状态流转理解
- 创建文件后,文件处于**未跟踪(untracked)**状态
- 执行
git add将文件加入暂存区后,进入**已暂存(staged)**状态 - 如果此时编辑该文件,文件会同时处于已暂存和**已修改(modified)**状态——因为暂存区里保留着之前的追踪内容,而工作目录里是新修改的内容
- 再次执行
git add就能让文件回到已暂存状态,解决这种双状态的情况 - 执行
git commit后,文件进入未修改(unmodified)(也就是已提交(committed))状态,因为刚完成提交后没有做任何修改 - 之后编辑该文件,文件会变为已修改状态
- 再次执行
git add暂存后,回到已暂存状态,整个生命周期循环重启 - 如果想取消追踪已暂存的文件,可以用
git restore --staged <文件名>把它从索引里移除(还是git status提醒我这个命令的!),不过我不确定要不要在流程图里把所有移除文件的方式都画进去。
疑问
想请教大家:我的上述理解是否正确?这张流程图能不能准确展示文件可能经历的状态?有没有遗漏关键步骤或者理解错误的地方?
内容的提问来源于stack exchange,提问作者Lou
相关产品推荐
相关产品推荐

