I'll create a short todo to track this task and then give step-by-step git commands (fish-friendly) for common scenarios: resolving merge conflicts by accepting incoming messages.po, replacing with versions from another branch, and verifying/committing the changes. Starting (1/1) *Provide git steps to replace messages.po files* Below are clear, fish-shell–compatible recipes for the different situations you might be in. Pick the one that matches your case. Safety first (recommended) - Make a quick branch backup so you can undo if something goes wrong: ```fish git branch backup-messages-po-(date +%Y%m%d%H%M%S) ``` A) You're in a merge (or rebase) conflict and want to accept the incoming branch's (theirs) version of every messages.po - This accepts the "incoming" side for any conflicted messages.po files, stages them, and lets you continue. 1. List conflicted messages.po (preview): ```fish git ls-files -u | awk '{print $4}' | sort -u | grep 'messages.po' || echo 'No conflicted messages.po' ``` 2. Checkout the incoming/theirs version for each such file and stage them: ```fish for f in (git ls-files -u | awk '{print $4}' | sort -u | grep 'messages.po') git checkout --theirs -- $f git add $f end ``` 3. Continue the merge/rebase: - If you were merging: ```fish git commit -m "Resolve conflicts: accept incoming messages.po" ``` - If you were rebasing: ```fish git rebase --continue ``` B) You want to replace all local `messages.po` files with the versions from another branch (for example `upstream/main`) - This is useful when you want to overwrite your workspace copies with the ones from a branch/commit. 1. Preview which files will be replaced: ```fish find . -name 'messages.po' -print ``` 2. Replace them with the version from `upstream/main` and stage: ```fish for f in (find . -name 'messages.po') git checkout upstream/main -- $f git add $f end ``` 3. Commit the replacements: ```fish git commit -m "Replace messages.po with versions from upstream/main" ``` C) Replace with files from a specific commit or tag - Replace from commit SHA `abc1234`: ```fish for f in (find . -name 'messages.po') git checkout abc1234 -- $f git add $f end git commit -m "Replace messages.po with versions from abc1234" ``` D) If you want to accept the remote side during a `git pull` merge conflict in one command - (Linux GNU xargs version) — runs only if there are conflicting files: ```fish git ls-files -u | awk '{print $4}' | sort -u | grep 'messages.po' | xargs -r -I{} sh -c 'git checkout --theirs -- "{}" && git add "{}"' git commit -m "Accept incoming messages.po" ``` (Note: fish doesn't change how xargs behaves; use the `for` loop above if you prefer pure-fish syntax.) Verification - Show the diff (staged vs HEAD): ```fish git diff --staged --name-only | grep 'messages.po' || echo 'No staged messages.po' git diff --staged path/to/some/messages.po | less ``` - Or list all modified `messages.po` files: ```fish git status --porcelain | grep 'messages.po' || echo 'No changes to messages.po' ``` Notes & gotchas - --theirs applies to the branch you are merging in (the incoming changes). During conflicts, "ours" is your current branch. - If no files match a pattern, some xargs implementations will error; the fish `for` loop approach is robust. - Always make a backup branch before mass-replacing files if you might want to revert. - If you use `git checkout -- ` note that modern Git also offers `git restore --source= -- `; both work. Example: ```fish for f in (find . -name 'messages.po') git restore --source=upstream/main -- $f git add $f end git commit -m "Restore messages.po from upstream/main" ``` If you tell me which exact situation you’re in (merge conflict, you want files from a branch, a specific commit, or from a tarball/patch), I can produce the exact commands tailored to that case and, if you want, a one-liner script to run.