2023-03-20 10:00:02

单个文件的硬重置

如何放弃对单个文件的更改并用新的HEAD副本覆盖它?我想做git重置——很难只做一个文件。


当前回答

可以使用以下命令:

git checkout filename

如果分支具有相同的文件名,则必须使用以下命令:

git checkout -- filename

其他回答

要恢复到上游/主节点,请执行以下操作:

git checkout upstream/master -- myfile.txt

这是一种简单、简单、实用的方法,可以让你摆脱困境,尤其是在你对git不太熟悉的情况下:

查看文件日志git-log myFile.js提交102305173029091u23f01w276931f7f42595f84f作者:kmiklas日期:2018年8月7日星期二09:29:34-0400JIRA-12345-用新架构重构。注意文件的哈希:102305173029091u23f01w276931f7f42595f84f使用哈希显示文件。确保这是你想要的:数字显示102305173029091u23f01w276931f7f42595f84f:/myFile.js将文件重定向到本地副本数字显示102305173029091u23f01w276931f7f42595f84f:/myFile.js>myFile.07aug2018.js备份当前文件。cp myFile.js myFile.bak.js在您喜爱的文本编辑器中打开这两个文件。vim myFile.jsvim myFile.07aug2018.js将代码从myFile.07aug2018.js复制到myFile.js并保存。提交并推送myFile.js再次查看日志,并确认文件已正确放置。告诉你的客户下载最新版本,开心地看着它与旧版本一起工作。

这不是最性感的,或者最以数字为中心的解决方案,而且绝对是“手动”重置/恢复,但它是有效的。它只需要很少的git知识,并且不会影响提交历史。

可以使用以下命令重置单个文件

git checkout HEAD -- path_to_file/file_name

使用以下命令列出所有更改的文件以获取path_to_file/filename

git status

重置为头部:

要将单个文件硬重置为HEAD:

git checkout @ -- myfile.ext

注意@是HEAD的缩写。旧版本的git可能不支持缩写形式。

重置为索引:

要将单个文件硬重置为索引,假设索引为非空,否则为HEAD:

git checkout -- myfile.ext

关键是,为了安全起见,您不希望在命令中省略@或HEAD,除非您明确表示只重置为索引。

可以使用以下命令:

git checkout filename

如果分支具有相同的文件名,则必须使用以下命令:

git checkout -- filename