根据我的流程,我将新更改推送到我的服务器 new_release 分支,然后服务器上的脚本负责应用新版本。在服务器上执行脚本时,git repo 有两个分支——master 和 new_release。在给定点,脚本执行以下操作:
#reset changes on the master branch
echo "Resetting master changes..."
git reset --hard HEAD
if [ $? -ne 0 ]; then
echo "Error: Cannot reset master changes"
exit 1
fi
#remove untracked files
echo "Removing untracked new files..."
git clean -fd
if [ $? -ne 0 ]; then
echo "Error: Cannot clean the repository"
exit 1
fi
#merge changes from new_release into master
echo "Merging master with the new_release..."
git merge new_release --ff-only
if [ $? -ne 0 ]; then
echo "Error: Cannot merge changes from new_release into master"
exit 1
fi
#remove new release branch
echo "Deleting the new_release branch..."
git branch –d new_release
if [ $? -ne 0 ]; then
echo "Error: Cannot remove the new_release branch"
exit 1
fi
但是,一旦我执行脚本,我会看到“git branch -d new_release”而不是删除本地分支,而是将其留在那里,然后创建了一个名为“d”的新分支!
此外,我看到有关该新“d”分支的以下输出:
$ git branch
* master
new_release
d
$ git branch -d d
error: remote branch 'd' not found.
$ git show-branch d
fatal: bad sha1 reference d
我在脚本中做错了什么?还有人可以帮助我从那个错误中恢复并摆脱那个“d”分支吗?它在我的生产服务器上。