mirror of
https://github.com/tj/git-extras.git
synced 2026-09-10 07:26:17 -04:00
feat: add resolve cmd
This commit is contained in:
parent
9d6319becb
commit
a848f827cf
11
Commands.md
11
Commands.md
|
|
@ -58,6 +58,7 @@
|
||||||
- [`git rename-remote`](#git-rename-remote)
|
- [`git rename-remote`](#git-rename-remote)
|
||||||
- [`git repl`](#git-repl)
|
- [`git repl`](#git-repl)
|
||||||
- [`git reset-file`](#git-reset-file)
|
- [`git reset-file`](#git-reset-file)
|
||||||
|
- [`git resolve`](#git-resolve)
|
||||||
- [`git root`](#git-root)
|
- [`git root`](#git-root)
|
||||||
- [`git rscp`](#git-scp)
|
- [`git rscp`](#git-scp)
|
||||||
- [`git scp`](#git-scp)
|
- [`git scp`](#git-scp)
|
||||||
|
|
@ -1402,6 +1403,16 @@ or reset one file to certain commit
|
||||||
$ git reset-file .htaccess dc82b19
|
$ git reset-file .htaccess dc82b19
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## git resolve
|
||||||
|
|
||||||
|
On default text-editor, open unmerged ("both modified" `status`) files in working-directory that have errors (e.g. conflict-markers),
|
||||||
|
then auto-stage all (in full work-tree) unmerged files without errors,
|
||||||
|
and finally [`continue`](#git-continue) (if possible).
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ git resolve
|
||||||
|
```
|
||||||
|
|
||||||
## git mr
|
## git mr
|
||||||
|
|
||||||
Checks out a merge request from GitLab. Usage: `git mr <ID|URL> [REMOTE]`.
|
Checks out a merge request from GitLab. Usage: `git mr <ID|URL> [REMOTE]`.
|
||||||
|
|
|
||||||
31
bin/git-resolve
Executable file
31
bin/git-resolve
Executable file
|
|
@ -0,0 +1,31 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
set -eufo pipefail
|
||||||
|
IFS=$' \t'
|
||||||
|
|
||||||
|
#shellcheck disable=SC2046
|
||||||
|
# ignore files outside WD, to avoid overload
|
||||||
|
git diff --name-only --diff-filter=U --relative -z |
|
||||||
|
while IFS= read -r -d '' f; do
|
||||||
|
# `--quiet` implies `--exit-code` which is incompatible with `--check`;
|
||||||
|
# however, it could be special-cased internally, so it could work
|
||||||
|
# (untested)
|
||||||
|
if ! git diff --check -- "$f" &>/dev/null; then
|
||||||
|
printf '%s\0' "$f"
|
||||||
|
fi
|
||||||
|
done |
|
||||||
|
# WARN: `-r` is too new
|
||||||
|
# https://github.com/tj/git-extras/pull/1233#issuecomment-3957233996
|
||||||
|
xargs -0r $(git var GIT_EDITOR)
|
||||||
|
|
||||||
|
# user might have removed other conflict-markers,
|
||||||
|
# so check full WT
|
||||||
|
git diff --name-only --diff-filter=U -z |
|
||||||
|
while IFS= read -r -d '' f; do
|
||||||
|
# WARN: `f` is relative to repo root!
|
||||||
|
# this might be broken
|
||||||
|
if git diff --check -- "$f"; then
|
||||||
|
git add -- "$f"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
git continue
|
||||||
Loading…
Reference in a new issue