是否有可能在Git中恢复已提交的文件?我已经将提交推送到GitHub然后我意识到有一个我不想被推送的文件(我还没有完成更改).
xor*_*xor 106
更新:添加更安全的方法
检查文件的上一个(未更改的)状态; 注意双破折号
git checkout HEAD^ -- /path/to/file
Run Code Online (Sandbox Code Playgroud)提交它:
git commit -am "revert changes on this file, not finished with it yet"
Run Code Online (Sandbox Code Playgroud)推它,不需要力量:
git push
Run Code Online (Sandbox Code Playgroud)回到你未完成的工作,再做(3次向上):
git checkout HEAD^ -- /path/to/file
Run Code Online (Sandbox Code Playgroud)修改存储库HEAD的最后一次提交,混淆你意外推送的工作,同时可能与你的同事已经拉过它的冲突,以及谁会长出白发并且失去大量时间试图调和他的本地分支头中央的:
要从上次提交中删除文件更改:
要将文件还原到上次提交之前的状态,请执行以下操作:
git checkout HEAD^ /path/to/file
Run Code Online (Sandbox Code Playgroud)要使用恢复的文件更新上次提交,请执行以下操作:
git commit --amend
Run Code Online (Sandbox Code Playgroud)要将更新的提交推送到repo,请执行以下操作:
git push -f
Run Code Online (Sandbox Code Playgroud)真的,考虑使用前面提到的首选方法.
小智 26
如果要从远程仓库中删除该文件,请先使用--cache选项将其从项目中删除,然后将其推送:
git rm --cache /path/to/file
git commit -am "Remove file"
git push
Run Code Online (Sandbox Code Playgroud)
(即使文件已添加到远程仓库中,也可以使用此提交).请记住向.gitignore添加您不想推送的文件扩展名.
Ren*_*hle 21
您只能将一个文件还原为指定的修订版.
首先,您可以检查文件更改的提交.
git log path/to/file.txt
然后,您可以使用修订号检出文件.
git checkout 3cdc61015724f9965575ba954c8cd4232c8b42e4 /path/to/file.txt
之后,您可以提交并再次推送它.
您可以使用以下工作流程:
git reset --soft HEAD~1
git reset HEAD /path/to/file
Run Code Online (Sandbox Code Playgroud)
将文件重置为正确的状态,然后提交并再次推送。
如果您确定还没有其他人获取您的更改,则可以--amend在提交时使用它来修改以前的提交(即重写历史记录),然后进行推送。我认为您必须-f在推送时使用该选项,以强制推送。
小智 5
获取最后一次提交的哈希码。
git log git revert <hash_code_from_git_log>git push在 GHR 中查看。你可能会得到你需要的东西,希望这对你有用
小智 5
使用
git rm --cached /path/to/file
然后添加、提交和推送。就像上面的答案一样,但你需要使用--cachednot --cache。