如何放弃对单个文件的更改并用新的HEAD副本覆盖它?我想做git重置——很难只做一个文件。
当前回答
要恢复到上游/主节点,请执行以下操作:
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知识,并且不会影响提交历史。
重置为头部:
要将单个文件硬重置为HEAD:
git checkout @ -- myfile.ext
注意@是HEAD的缩写。旧版本的git可能不支持缩写形式。
重置为索引:
要将单个文件硬重置为索引,假设索引为非空,否则为HEAD:
git checkout -- myfile.ext
关键是,为了安全起见,您不希望在命令中省略@或HEAD,除非您明确表示只重置为索引。
可以使用以下命令:
git重置--my-file.txt
这将在添加时更新my-file.txt的工作副本。
要恢复到上游/主节点,请执行以下操作:
git checkout upstream/master -- myfile.txt
自Git 2.23(2019年8月)以来,您可以使用restore(更多信息):
git restore pathTo/MyFile
上述操作将在当前分支上恢复HEAD上的MyFile(最后一次提交)。
如果您想从其他提交中获取更改,则可以在提交历史记录上进行倒退。下面的命令将在最后一次提交之前获取MyFile两次提交。现在需要-s(--source)选项,因为现在在还原源时使用master~2而不是master(默认值):
git restore -s master~2 pathTo/MyFile
您也可以从其他分支获取文件!
git restore -s my-feature-branch pathTo/MyFile
推荐文章
- RPC失败;卷度传输已关闭,剩余未完成的读取数据
- 我应该在.gitignore文件中添加Django迁移文件吗?
- 错误:您对以下文件的本地更改将被签出覆盖
- Git rebase—即使所有合并冲突都已解决,仍然会继续报错
- 在Git中,我如何知道我的当前版本是什么?
- 跟踪所有远程git分支作为本地分支
- 自定义SSH端口上的Git
- git如何显示不存在于.gitignore中的未跟踪文件
- Git错误:遇到7个文件应该是指针,但不是
- GitHub克隆与OAuth访问令牌
- 移动(或“撤销”)最后一个git提交到非暂存区域
- 我可以在GitHub上对要点进行拉请求吗?
- Hg:如何做一个像git的rebase
- 如何丢弃远程更改并将文件标记为“已解决”?
- 如何查看远程标签?