Git команды для добавления и коммита с использованием скрипта bash / shell - PullRequest
0 голосов
/ 19 марта 2019

Я совершенно новичок в написании сценариев bash и пытаюсь написать сценарий, который добавляет, фиксирует и добавляет в хранилище

commit_message="$1"
git add . -A
git commit -m "$commit_message"
git push

Это добавляет все отредактированные / новые файлы в мой репозиторий, есть ли способ передать требуемые имена файлов в качестве аргументов, выполняющих этот скрипт? Я получил этот скрипт от Google, но если есть какой-то другой способ сделать это, пожалуйста, дайте мне знать.

1 Ответ

2 голосов
/ 19 марта 2019

Я использую функцию для удобства. Это работает для моего стиля кодирования, что для меня означает всегда работать в чистой директории в корне репо и получать доступ ко всем файлам с относительным путем. YMMV.

qp() {
    [[ -z "$1" ]] && echo "Please enter a commit message:";
    typeset msg="$( [[ -n "$1" ]] && echo "$*" || echo $(head -1) )";
    date;
    git pull;
    git add .;
    git commit -m "$msg";
    git push;
    date
}

Назовите это как -

qp add a commit message

Обратите внимание, что он объединяет все аргументы в один msg и, если он не получает ни одного, запрашивает один.

$: qp
Please enter a commit message:
foo bar baz
Tue, Mar 19, 2019  3:25:24 PM
Already up-to-date.
On branch master
Your branch is up-to-date with 'origin/master'.

nothing to commit, working tree clean
Everything up-to-date
Tue, Mar 19, 2019  3:25:31 PM

То, что вы просили:

Перепишите его, чтобы взять список файлов и всегда запрашивать сообщение, например:

qp() {
    echo "Please enter a commit message:";
    typeset msg="$( head -1 )";
    date;
    git pull;
    git add "$@";
    git commit -m "$msg";
    git push;
    date
}

Вы можете просто поместить код функции в скрипт с или без функции, как вам нравится.

Затем запустите его как

qp file1 file2 fileN

и он запросит сообщение о коммите - ИЛИ сделайте первый аргумент сообщением о коммите, например:

qp() {
    typeset msg="$1";
    shift;
    date;
    git pull;
    git add "$@";
    git commit -m "$msg";
    git push;
    date
}

Просто убедитесь, что вы "цитируете" этот первый аргумент сообщения коммита. ;)

qp "here's my commit message" file1 file2 fileN
...