简体   繁体   中英

Bash script that rebase Git repository

I'm trying to find a way to rebase the repository by using a Bash Script, I got this, but it returned alot a few errors that I don't know how to fix them for example: ./bash.sh: line 3: $'\\r': command not found

Errors:

./bash.sh: line 3: $'\r': command not found
./bash.sh: line 6: $'\r': command not found
Updating Repo: /home/teste/ with url:
./bash.sh: line 8: $'\r': command not found
./bash.sh: line 16: syntax error near unexpected token `$'\r''
'/bash.sh: line 16: `(git fetch --all && git stash)

Here is the script that I got

directory="/home/teste/" ## Where the server is located
original_dir="/root" ## Where we should back after the pull

cd $directory # switch to the git repo
repo_url=$(git config --get remote.origin.url)

echo "Updating Repo: $directory with url: $repo_url"

main_branch="master"
if [ "$repo_url" == "XXXXX" ]; then # if you have a repo where the primary branch isnt master
    $main_branch="trunk"
fi

# update the repo, then stash any local changes
echo -e "\ncalling: git fetch --all && git stash"
(git fetch --all && git stash)
current_branch=$(git rev-parse --abbrev-ref HEAD)

# switch to master/trunk branch and rebase it, then switch back to original branch
if [ $current_branch != $main_branch ]; then
    echo -e "\ncalling: git checkout $main_branch && git rebase && git checkout $current_branch"
    (git checkout $main_branch && git rebase && git checkout $current_branch)
fi

# rebase the original branch and then stash pop back to original state
echo -e "\ncalling: git rebase && git stash pop on branch: $current_branch"
(git rebase && git stash pop )

#switch back to the starting directory
cd $original_dir
echo ""

It's your file encoding, not the scripting itself - windows carriage returns are different to unix format. If you are using a GUI editor, change your line endings to 'unix' or 'win' format depending on your OS.

There is also a tool called dos2unix that you can run against a file to convert line endings to unix format (or visa versa unix2dos).

In your .gitattributes configuration you can also set what format you want. This will make sure the code you check out and commit gets treated accordingly in the future:

text eol=crlf # unix

OR

text eol=lf # windows

See: https://help.github.com/articles/dealing-with-line-endings/

See this page for other ways to skin this cat. '\\r': command not found - .bashrc / .bash_profile

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM