如何在Git中生成文件状态‘ R’及‘ C’?
Git状态‘ R’和‘ C’的生成测试方法
生成‘ R’状态(未暂存的重命名标记)
常规git mv会生成R (暂存区已记录重命名),要得到 R(工作区重命名但暂存区未同步删除旧文件),按以下步骤操作:
- 手动重命名已追踪文件(不用
git mv):mv README.md roadme.md - 暂存新生成的文件,但不处理旧文件的删除:
git add roadme.md - 查看精简状态:
git status --porcelain
此时输出会显示:
R README.md -> roadme.md
这个状态表示:暂存区中旧文件README.md仍处于正常追踪状态,但工作区里它已被删除并替换为新文件roadme.md,Git识别出这是一次重命名,但暂存区未同步旧文件的删除操作。
生成‘ C’状态(复制检测标记)
C状态是Git识别文件复制的标记,默认Git不会自动检测复制,需要手动开启相关选项,生成步骤:
- 确保有一个已被Git追踪的文件(比如
README.md) - 手动复制该文件生成新文件:
cp README.md COPY.md - 暂存新生成的复制文件:
git add COPY.md - 用强制检测副本的参数查看状态:
git status --find-copies-harder --porcelain
此时输出会显示类似:
C README.md -> COPY.md
如果未暂存复制文件,执行git status --find-copies-harder --porcelain会得到 C README.md -> COPY.md。
注:
--find-copies-harder会让Git花费更多资源去检测文件复制关系,也可以通过配置git config status.showRenames copies让默认状态显示复制标记。
内容的提问来源于stack exchange,提问作者herr.kaste
相关产品推荐
相关产品推荐

