77 lines
1.8 KiB
Bash
Executable File
77 lines
1.8 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Check if a branch name was provided
|
|
if [ -z "$1" ]; then
|
|
echo "Error: Please provide the name of the branch to merge"
|
|
echo "Usage: ./git-merge.sh branch_name"
|
|
exit 1
|
|
fi
|
|
|
|
BRANCH_NAME=$1
|
|
|
|
# Check if the branch exists
|
|
if ! git show-ref --verify --quiet refs/heads/$BRANCH_NAME; then
|
|
echo "Error: Branch '$BRANCH_NAME' does not exist"
|
|
exit 1
|
|
fi
|
|
|
|
# Display the steps that will be executed
|
|
echo "=== Starting merge process ==="
|
|
echo "1. Checkout to main"
|
|
echo "2. Pull latest changes"
|
|
echo "3. Merge branch $BRANCH_NAME"
|
|
echo "4. Push to origin"
|
|
echo "5. Delete local and remote branches"
|
|
|
|
# Ask for confirmation
|
|
read -p "Do you want to continue? (y/n) " -n 1 -r
|
|
echo
|
|
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
|
echo "Operation cancelled"
|
|
exit 1
|
|
fi
|
|
|
|
# Execute commands
|
|
echo -e "\n=== Checking out to main ==="
|
|
git checkout main
|
|
if [ $? -ne 0 ]; then
|
|
echo "Error during checkout to main"
|
|
exit 1
|
|
fi
|
|
|
|
echo -e "\n=== Pulling latest changes ==="
|
|
git pull origin main
|
|
if [ $? -ne 0 ]; then
|
|
echo "Error during pull"
|
|
exit 1
|
|
fi
|
|
|
|
echo -e "\n=== Merging branch $BRANCH_NAME ==="
|
|
git merge $BRANCH_NAME
|
|
if [ $? -ne 0 ]; then
|
|
echo "Error during merge. Please resolve conflicts manually"
|
|
exit 1
|
|
fi
|
|
|
|
echo -e "\n=== Pushing to origin ==="
|
|
git push origin main
|
|
if [ $? -ne 0 ]; then
|
|
echo "Error during push"
|
|
exit 1
|
|
fi
|
|
|
|
echo -e "\n=== Deleting local branch ==="
|
|
git branch -d $BRANCH_NAME
|
|
if [ $? -ne 0 ]; then
|
|
echo "Warning: Unable to delete local branch"
|
|
echo "If you are sure everything is properly merged, use: git branch -D $BRANCH_NAME"
|
|
fi
|
|
|
|
echo -e "\n=== Deleting remote branch ==="
|
|
git push origin --delete $BRANCH_NAME
|
|
if [ $? -ne 0 ]; then
|
|
echo "Warning: Unable to delete remote branch"
|
|
fi
|
|
|
|
echo -e "\n=== Merge process completed successfully ==="
|