Which FFMPEG option is correct, to fix Corrupted video stream (MPEG-2 TS)?

I am trying to repair corrupted video stream files. (I am on Linux). After googling I found few FFMPEG options. Please someone explain what is the difference between these options and which one is the best and future-proof.

# 1. This -ignore_unknown?
ffmpeg -i Video_corrupted.mp4 -map 0 -ignore_unknown -c copy video_repaired.ts

# 2. This -copy_unknown?
ffmpeg -i Video_corrupted.mp4 -map 0 -copy_unknown -c copy video_repaired.ts

# 3. This -err_detect ignore_err?
ffmpeg -err_detect ignore_err -i Video_corrupted.mp4 -c copy video_repaired.ts

If you are getting the following error

[matroska @ 0000023ccef9d980] Timestamps are unset in a packet for stream 0. 
This is deprecated and will stop working in the future. Fix your code to set the timestamps properly
[matroska @ 0000023ccef9d980] Can't write packet with unknown timestamp
av_interleaved_write_frame(): Invalid argument

try this:

ffmpeg -fflags +genpts -i input.mkv -c copy repaired.mkv

See How to get rid of ffmpeg pts has no value error on Super User.