[英]Git: Remove committed file after push
是否有可能恢复 Git 中提交的文件? 我已经将提交推送到 GitHub 然后我意识到有一个我不想推送的文件(我还没有完成更改)。
更新:添加了更安全的方法
检查文件的先前(未更改)状态; 注意双破折号
git checkout HEAD^ -- /path/to/file
提交它:
git commit -am "revert changes on this file, not finished with it yet"
推它,不需要用力:
git push
回到你未完成的工作,再做一次(向上箭头 3 次):
git checkout HEAD^ -- /path/to/file
修改存储库 HEAD 的最后一次提交,混淆您意外推送的工作,同时可能与您的同事发生冲突,他可能已经拉取了它,并且会长出白发并浪费大量时间试图协调他的本地分支负责人与中央:
要从上次提交中删除文件更改:
要将文件恢复到上次提交之前的状态,请执行以下操作:
git checkout HEAD^ /path/to/file
要使用恢复的文件更新最后一次提交,请执行以下操作:
git commit --amend
要将更新的提交推送到 repo,请执行以下操作:
git push -f
真的,考虑使用前面提到的首选方法。
如果要从远程存储库中删除文件,请首先使用 --cache 选项将其从项目中删除,然后推送它:
git rm --cache /path/to/file
git commit -am "Remove file"
git push
(即使文件在某些提交之前已添加到远程存储库,这也有效)请记住将您不想推送的文件扩展名添加到 .gitignore。
您只能将一个文件恢复到指定的修订版。
首先,您可以检查文件已更改的提交。
git log path/to/file.txt
然后,您可以使用修订号签出文件。
git checkout 3cdc61015724f9965575ba954c8cd4232c8b42e4 /path/to/file.txt
之后,您可以提交并再次推送它。
将文件重置为正确的状态,提交并再次推送。
如果您确定还没有其他人获取您的更改,您可以在提交时使用--amend
来修改您之前的提交(即重写历史记录),然后推送。 不过,我认为您必须在推送时使用-f
选项来强制推送。
获取上次提交的哈希码。
git log
git revert <hash_code_from_git_log>
git push
在 GHR 中查看。 你可能会得到你需要的东西,希望你这是有用的
使用git rm --cached /path/to/file
然后添加、提交和推送。 就像上面的答案一样,但您需要使用--cached
而不是--cache
。
您可以使用以下工作流程:
git reset --soft HEAD~1
git reset HEAD /path/to/file
我遵循了这些步骤[它总是发生在我身上,尤其是节点模块文件夹]
1- git 日志
2- git 还原 04409a858709c82fbf9eae7559d6ae9c34b6fbe6
用你承诺的号码更改号码
<它将是像这样的长数字 04409a858709c82fbf9eae7559d6ae9c34b6fbe6>
3-git 推送
这对我有用,但请记住,这里有一个技巧,您的第一次提交将是列表中的最后一次提交,因此请检查日期和提交消息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.