Комбинированная команда git `continue` - PullRequest
0 голосов
/ 25 октября 2018

По-разному мне может потребоваться выполнить:

  • git rebase --continue
  • git cherry-pick --continue
  • git revert --continue

InВ каждом случае моя командная строка напоминает мне, что я нахожусь в середине (rebase / cp / revert), поэтому мне ясно, что он знает, какой из них активен.

Таким образом, создается ощущение, что концептуально может бытькоманда git continue, которая будет продолжаться независимо от того, какая операция в данный момент активна, тем самым сохраняя некоторую утомительную печать?

  • A) Эта команда уже существует (в каком случае, что это и что она поддерживает?
  • B) Как я мог написать эту команду сам, если бы я был так склонен?(Может с псевдонимами?)

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018

В дополнение к ответу @ alfunx, я мог бы предложить это изменение:

Вместо того, чтобы делать repo_path=$(git rev-parse --git-dir 2>/dev/null), поэтому код возврата и журнал git игнорируются, я изменил скрипт на:

#!/usr/bin/env bash

repo_path=$(git rev-parse --git-dir)

if [ $? -ne 0 ]; then
    exit $?
fi

if [ -d "${repo_path}/rebase-merge" ]; then
    git rebase --continue
elif [ -d "${repo_path}/rebase-apply" ]; then
    git rebase --continue
elif [ -f "${repo_path}/MERGE_HEAD" ]; then
    git merge --continue
elif [ -f "${repo_path}/CHERRY_PICK_HEAD" ]; then
    git cherry-pick --continue
elif [ -f "${repo_path}/REVERT_HEAD" ]; then
    git revert --continue
else
    echo "No something in progress?"
fi

Теперь этот скрипт ...

  1. возвращает соответствующий код выхода (например, 128 за то, что он не является репозиторием git и т. Д.) И сообщение об ошибке из самого двоичного файла git (например, fatal: not a git repository (or any of the parent directories): .git)
  2. echo "No something in progress?" если ничего не происходит.
0 голосов
/ 25 октября 2018

Такой команды не существует, насколько мне известно.Однако вы можете создать скрипт для этого, например, git-continue:

#!/usr/bin/env bash

repo_path=$(git rev-parse --git-dir 2>/dev/null)

if [ -d "${repo_path}/rebase-merge" ]; then
    git rebase --continue
elif [ -d "${repo_path}/rebase-apply" ]; then
    git rebase --continue
elif [ -f "${repo_path}/MERGE_HEAD" ]; then
    git merge --continue
elif [ -f "${repo_path}/CHERRY_PICK_HEAD" ]; then
    git cherry-pick --continue
elif [ -f "${repo_path}/REVERT_HEAD" ]; then
    git revert --continue
fi

Поместите скрипт где-нибудь в $PATH, и тогда вы сможете использовать git continue.

Примечаниечто есть похожие флаги, такие как --continue, например --abort, --skip, --quit, которые вы также можете охватить.

...