Автоматизируйте коммиты и отправки Git в Linux с помощью сценария Bash

Учебное пособие по автоматизированному Git Commit и Push Script

Как человек, которому надоело вручную добавлять, фиксировать и отправлять код, я хотел создать решение, которое могло бы автоматизировать этот процесс. Это руководство поможет вам настроить сценарий bash, который автоматизирует процесс фиксации и отправки изменений в несколько репозиториев Git через равные промежутки времени. Скрипт немедленно добавит изменения, зафиксирует их каждые несколько часов и отправит в ветку main.

Предпосылки

  1. Установите Git. Убедитесь, что Git установлен в вашей системе.

2. Инициализировать репозитории Git: для каждого репозитория, который вы хотите автоматизировать, инициализируйте репозиторий Git. Откройте терминал и перейдите в каждый каталог репозитория. Запустите следующую команду в каждом каталоге:

git init

3. Добавить удаленный источник. После инициализации репозиториев Git добавьте удаленный источник для каждого хранилища. Замените <remote-url> URL-адресом вашего удаленного репозитория. Выполните следующую команду в каждом каталоге репозитория:

git remote add origin <remote-url>

Настройка скрипта

  1. Создайте сценарий Bash:

Откройте текстовый редактор и создайте новый файл с именем auto_commit.sh.

2. Скопируйте скрипт:

Скопируйте следующий скрипт и вставьте его в auto_commit.sh:

#!/bin/bash

# Make an array of repository directories,which you want to auto-commit
repo_dirs=(
    "/path/to/your/repo1"
    "/path/to/your/repo2"
    "/path/to/your/repo3"
    # Add more repository directories,if needed
    
)

# Function to navigate to a repository directory, add changes,
# and commit every few hours
perform_git_operations() {
    local repo_dir=$1

    # Navigate to the repo directory
    cd "$repo_dir" || return

    # Add all changes to the staging area
    git add .

    # Commit the changes with a timestamp
    while true; do
        git commit -m "Automated commit on $(date)" # change msg as needed
        sleep 6h # change 6 with any value
    done
}

# Loop over the repo directories and run the same script for each one
for repo_dir in "${repo_dirs[@]}"; do
    # Run the script initially for each repo directory
    perform_git_operations "$repo_dir" &
done

# Loop indefinitely and push any changes, every few minutes
while true; do
    sleep 15m # change 15 with any value

    # Loop through the repo directories and push changes for each one
    for repo_dir in "${repo_dirs[@]}"; do
        # Navigate to the repository directory
        cd "$repo_dir" || continue

        # Push the changes to the remote repo's 'main' branch
        git push origin main
    done
done

3.Настройте каталоги репозиториев:

В скрипте обновите массив repo_dirs, указав пути к каталогам вашего репозитория. Если не знаете путь, откройте каталог в терминале и используйте команду `pwd`.

4. Сделайте скрипт исполняемым:

Сохраните файл auto_commit.sh и сделайте его исполняемым, выполнив в терминале следующую команду:

chmod +x auto_commit.sh

Запуск скрипта

  1. Выполнить скрипт:

В терминале перейдите в каталог, где находится auto_commit.sh. Запустите следующую команду, чтобы выполнить скрипт: ./auto_commit.sh

2.Расслабьтесь и расслабьтесь:

Скрипт немедленно добавит изменения, зафиксирует каждые 6 часов и отправит изменения в ветку main каждые 15 минут для всех репозиториев, указанных в массиве repo_dirs.

Поздравляем! Вы настроили автоматическую фиксацию Git и сценарий отправки. Этот сценарий поможет вам оптимизировать рабочий процесс (в основных случаях), автоматизируя процесс фиксации и отправки изменений в несколько репозиториев через равные промежутки времени.

Не стесняйтесь настраивать сценарий в соответствии с вашими конкретными потребностями.