Git – 撤销文件

git resetgit checkout命令还接受文件路径作为参数。这让它们将操作限制在单个文件中,而不是对整个提交快照。

Git reset 文件

当使用文件路径调用时,git reset将更新暂存区以匹配指定提交的版本,但从不更改工作目录。--soft--mixed--hard标志对操作文件的git reset不起作用,操作文件时暂存区总是会更新,而工作目录永远不会更新。

例如,下面的命令将获取foo.py文件,在头部往后第2个提交中的版本,然后添加到暂存区:

git reset HEAD~2 foo.py

git reset通常与HEAD一起使用,而不是任意提交。运行git reset HEAD foo.py将清除暂存区中的更改,但工作目录中的更改不变。

图

Git checkout 文件

git checkout操作文件类似于git reset操作文件,只不过它更新的是工作目录而不是暂存区。git checkout命令操作文件时,不移动HEAD指针。

图

例如,下面的命令将获取foo.py文件,在头部往后第2个提交中的版本,然后更新工作目录中的foo.py文件:

git checkout HEAD~2 foo.py

就像git checkout针对提交的操作一样,这可以用于检查项目的旧版本 — 但是范围仅限于指定的文件。

如果提交签出的旧文件,这将产生revert到该文件旧版本的效果。注意,这将删除对文件的所有后续更改,而git revert命令仅撤消指定提交所引入的更改。

git reset一样,git checkout通常使用HEAD作为参数来引用提交。例如,git checkout HEAD foo.py的作用是将foo.py文件,未添加到暂存区的更改丢弃。这与git reset HEAD --hard命令的作用类似,但是git checkout HEAD foo.py只对指定的文件进行操作。



浙ICP备17015664号 浙公网安备 33011002012336号 联系我们 网站地图  
@2019 qikegu.com 版权所有,禁止转载