Ответ 1
Вам нужно сделать:
git commit -m "$desc"
В текущем script, test
идет как сообщение фиксации, а commit
и script
рассматриваются как следующие аргументы.
Я пишу bash script для добавления, фиксации, всех файлов в каталоге.
#!/bin/bash
git add .
read -p "Commit description: " desc
git commit -m $desc
git push origin master
Я получаю следующую ошибку:
$ ./togithub
Commit description:
test commit script
error: pathspec 'commit' did not match any file(s) known to git.
error: pathspec 'script"' did not match any file(s) known to git.
Everything up-to-date
Я не уверен, что это проблема с чтением в тексте (it echo
fine) или передачей его в git commit -m
.
Вам нужно сделать:
git commit -m "$desc"
В текущем script, test
идет как сообщение фиксации, а commit
и script
рассматриваются как следующие аргументы.
Здесь слияние двух последних ответов - объединение друг с другом add -u является удивительным, но встроенная команда чтения вызывала у меня проблемы. Я пошел с (последняя строка, используемая для моего нажатия на герою, измените на "git push origin head", если это ваш метод):
#!/bin/bash
read -p "Commit description: " desc
git add . && \
git add -u && \
git commit -m "$desc" && \
git push heroku master
полезно удалить из индекса файлы, которые действительно были удалены. git add -u
позаботится об этом. Кроме того, вы можете рассмотреть возможность объединения этих команд следующим образом:
git add . && \
git add -u && \
git commit -m "$(read -p 'Commit description: ')" && \
git push origin HEAD
Если какая-либо команда не удалась, она перестанет оценивать остальные команды.
Просто пища для размышлений (непроверенная еда).
Спасибо!
#!/bin/bash
git pull
git add .
git commit -m "$*"
git push
вызвать script с комментарием как cmd args, меньше клавиш для нажатия:
$ ./togithub test commit script
Ниже приведено script, которое я использую для управления моими репозиториями git. Это будет включать в себя опцию push в ваш филиал происхождения, ваш промежуточный сайт (если он установлен) и ваш производственный сайт (если настройка)
#!/usr/bin/env bash
# die script -- just in case
die() { echo "[email protected]" 1>&2 ; exit 1; }
# kill message when dead
KILL="Invalid Command"
# function to see where to push what branch
pushing() {
git branch
sleep 1
tput setaf 1;echo What Branch?;tput sgr0
read -r branch
tput setaf 2;echo Where to? You can say 'origin', 'staging', or 'production';tput sgr0
read -r ans
if [ "$ans" = "origin" ] || [ "$ans" = "staging" ] || [ "$ans" = "production" ]
then
git push "$ans" "$branch"
elif [ "$ans" = "no" ]
then
echo "Okay"
else die "$KILL"
fi
}
# function to see how many more times
more() {
tput setaf 2;echo More?;tput sgr0
read -r more
if [ "$more" = "yes" ]
then
pushing
elif [ "$more" = "no" ]
then
die "Goodbye"
else die "$KILL"
fi
}
# get the root directory in case you run script from deeper into the repo
gr="$(git rev-parse --show-toplevel)"
cd "$gr" || exit
tput setaf 5;pwd;tput sgr0
# begin commit input
git add . -A
read -r -p "Commit description: " desc
git commit -m "$desc"
# find out if we're pushin somewhere
tput setaf 2;echo wanna do some pushin?;tput sgr0
read -r push
if [ "$push" = "yes" ]
then
pushing # you know this function
until [ "$more" = "no" ]
do
more # you know this function
done
elif [ "$push" = "no" ]
then
echo "Okay"
else die "$KILL"
fi
Я попытался включить как можно больше комментариев, чтобы помочь вам понять, что все делает.
сообщите мне, если у вас есть какие-либо вопросы.
Кроме того, у меня такая настройка, как эта
echo "alias commit='sh /path/to/script.sh" >> ~/.bash_profile
source ~/.bash_profile
возможно, это может помочь кому-то, кто хочет ускорить рабочий процесс
Это то, что я использую большую часть времени для фиксации локальной ветки и объединения с удаленными ветвями:
Этот маленький bash script позволяет вам добавлять и фиксировать в своем локальном ветки, выезд в другую ветку, слейте ее и нажмите, а затем снова проверьте ваш локальный филиал, чтобы вы продолжали работать.
default="local-dev-whatever-the-name-of-your-local-branch"
read -p "Enter local branch [$default]: " local
local=${local:-$default}
echo "Local branch is $local"
if [ -z "$local" ]
then
bin/git-merge.sh
else
printf "Enter remote branch: "
read remote
if [ -z "$remote" ]
then
printf "Cannot continue without remote branch!\n\n"
exit
fi
git add .
git add -u
read -r -p 'Commit description: ' desc
if [ -z "$desc" ]
then
printf "\nExit: commit description is empty!"
fi
git commit -m "$desc"
git checkout $remote
git status
git merge $local
git push
git status
git checkout $local
git status
printf "\nEnd local commit on $local; merge and push to branch $remote. Well done!\n"
fi