git中文件的状态状态切换
在 Git 中,文件的状态是指文件相对于 Git 仓库的当前情况。以下是一些常见的文件状态及其含义:
-
未跟踪(Untracked):
-
这是新创建的文件或从其他位置复制过来的文件,Git 还没有开始跟踪这些文件的更改。
-
这些文件不会出现在
git status
命令的 "Changes to be committed" 部分,而是出现在 "Untracked files" 部分。
-
-
已修改(Modified):
-
文件已经被修改,但还没有添加到暂存区。
-
这些文件出现在
git status
命令的 "Changes not staged for commit" 部分。
-
-
已暂存(Staged):
-
文件的修改已经被添加到暂存区,准备在下一次提交时被保存到仓库历史记录中。
-
这些文件出现在
git status
命令的 "Changes to be committed" 部分。
-
-
已提交(Committed):
-
文件的更改已经被提交到本地仓库,成为仓库历史记录的一部分。
-
提交后的文件不再出现在
git status
命令的输出中,除非你再次修改它。
-
文件状态的切换:
-
未跟踪(Untracked)-> 已暂存(Staged):
-
使用
git add <file>
命令将未跟踪的文件添加到暂存区。 -
或者,使用
git add .
命令将所有未跟踪的文件和已修改的文件添加到暂存区。
-
-
已修改(Modified)-> 已暂存(Staged):
-
使用
git add <file>
命令将已修改的文件添加到暂存区。
-
-
已暂存(Staged)-> 已修改(Modified):
-
使用
git reset <file>
命令将已暂存的文件从暂存区移除,使其回到已修改状态。
-
-
已暂存(Staged)-> 未跟踪(Untracked):
-
这种情况通常不会发生,因为文件一旦被添加到暂存区,Git 就开始跟踪它了。但是,你可以使用
git rm --cached <file>
命令从暂存区和 Git 仓库中删除文件,使其回到未跟踪状态。
-
-
已修改(Modified)-> 未跟踪(Untracked):
-
这种情况也不会发生,因为文件一旦被修改,Git 就开始跟踪它了。但是,你可以使用
git checkout -- <file>
命令将文件恢复到最后一次提交的状态,或者使用git rm <file>
命令从工作目录中删除文件。
-
-
已提交(Committed)-> 已修改(Modified):
-
修改已提交的文件,使其成为已修改状态。
-
-
已提交(Committed)-> 未跟踪(Untracked):
-
删除已提交的文件,使其成为未跟踪状态。
-
通过这些命令,你可以控制文件在 Git 中的状态,从而实现版本控制的目的。