error: Terminal is dumb, but EDITOR unset - BitBucket Pipeline
error: Terminal is dumb, but EDITOR unset - BitBucket Pipeline
我第一次使用 BitBucket Pipelines 通过 SSH 连接到开发服务器并在向所述分支进行推送时执行 git pull origin branch
。这很简单,一切都按预期进行。
当合并伴随拉取并且需要用户输入来提交合并时,问题就出现了。我在失败的构建日志中收到以下消息:
* branch feature/development -> FETCH_HEAD
d2c27a5f..63d74c8f feature/development -> origin/feature/development
error: Terminal is dumb, but EDITOR unset
Not committing merge; use 'git commit' to complete the merge.
我只想绕过这个用户输入要求,必要时提交并继续。
这是我的构建配置:
image: php:7.1.29
pipelines:
default:
- step:
name: Deploy to dev
deployment: dev
# trigger: manual # Uncomment to make this a manual deployment.
script:
- echo "Deploying to dev..."
- pipe: atlassian/ssh-run:0.2.5
variables:
SSH_USER: 'root'
SERVER: '82.xxx.xx.xx5'
MODE: 'command'
COMMAND: 'cd /home/ubuntu/public_html/dev/ && \
git pull origin feature/development'
- echo "Deployed!"
我完全不知道如何实现这一点。任何提示都会很棒。
TIA!
默认情况下,当您进行合并时,Git 会尝试调用编辑器,以便您可以编辑提交消息并以有用的方式扩展提交消息。如果没有设置编辑器,Git默认为vi
.
但是,在非交互式设置中,Git 非常清楚 vi
不起作用,因为您没有合适的终端,所以它会尝试使用 EDITOR
环境变量,它应该能够在哑终端中工作,但未设置。 (无论如何,如果设置了它,它会优先于 vi
使用它。)这就是你收到该消息的原因。
如果您不想要这种行为,您可以将环境变量 GIT_MERGE_AUTOEDIT
设置为 no
,它将只使用默认值,这可能就是您想要的。如果你想要不同的东西,你可以用 -m
选项指定它,或者你可以指定一个脚本来用 EDITOR
环境变量就地编辑它。
感谢@phd,我能够通过在合并后立即停止提交来解决这个问题,然后使用 -m
选项提供我自己的提交消息。
git pull --no-commit && git commit -m "Merge"
我另外添加了策略 -x theirs
以确保自动接受传入的更改。添加了更多语句以确保不会丢失任何本地更改,在没有冲突的情况下优先考虑传入的更改,并且不会报告误报。
这是我的配置文件现在的样子:
image: php:7.1.29
pipelines:
default:
- step:
name: Deploy to dev
deployment: dev
# trigger: manual # Uncomment to make this a manual deployment.
script:
- echo "Deploying to dev..."
- pipe: atlassian/ssh-run:0.2.5
variables:
SSH_USER: 'root'
SERVER: '82.xxx.xx.xx5'
MODE: 'command'
COMMAND: 'cd /home/ubuntu/public_html/dev/ && \
git add . && \
git commit -a -m "local files server commit" && \
(echo "OK"; exit 0) || (c=$?; echo "NOK"; (exit 0)) && \
git pull origin feature/development -X theirs --no-commit && \
git commit -m "Merge" && \
(echo "OK."; exit 0) || (c=$?; echo "NOK"; (exit 0))'
- echo "Deployed!"
我首先在终端中 运行ning git status
解决了这个问题。这个命令说所有的冲突都是固定的,我可以 运行:
git rebase --continue
在我 运行 上面的命令之后,我收到了这条消息:
Successfully rebased and updated refs/heads/main.
我第一次使用 BitBucket Pipelines 通过 SSH 连接到开发服务器并在向所述分支进行推送时执行 git pull origin branch
。这很简单,一切都按预期进行。
当合并伴随拉取并且需要用户输入来提交合并时,问题就出现了。我在失败的构建日志中收到以下消息:
* branch feature/development -> FETCH_HEAD
d2c27a5f..63d74c8f feature/development -> origin/feature/development
error: Terminal is dumb, but EDITOR unset
Not committing merge; use 'git commit' to complete the merge.
我只想绕过这个用户输入要求,必要时提交并继续。
这是我的构建配置:
image: php:7.1.29
pipelines:
default:
- step:
name: Deploy to dev
deployment: dev
# trigger: manual # Uncomment to make this a manual deployment.
script:
- echo "Deploying to dev..."
- pipe: atlassian/ssh-run:0.2.5
variables:
SSH_USER: 'root'
SERVER: '82.xxx.xx.xx5'
MODE: 'command'
COMMAND: 'cd /home/ubuntu/public_html/dev/ && \
git pull origin feature/development'
- echo "Deployed!"
我完全不知道如何实现这一点。任何提示都会很棒。 TIA!
默认情况下,当您进行合并时,Git 会尝试调用编辑器,以便您可以编辑提交消息并以有用的方式扩展提交消息。如果没有设置编辑器,Git默认为vi
.
但是,在非交互式设置中,Git 非常清楚 vi
不起作用,因为您没有合适的终端,所以它会尝试使用 EDITOR
环境变量,它应该能够在哑终端中工作,但未设置。 (无论如何,如果设置了它,它会优先于 vi
使用它。)这就是你收到该消息的原因。
如果您不想要这种行为,您可以将环境变量 GIT_MERGE_AUTOEDIT
设置为 no
,它将只使用默认值,这可能就是您想要的。如果你想要不同的东西,你可以用 -m
选项指定它,或者你可以指定一个脚本来用 EDITOR
环境变量就地编辑它。
感谢@phd,我能够通过在合并后立即停止提交来解决这个问题,然后使用 -m
选项提供我自己的提交消息。
git pull --no-commit && git commit -m "Merge"
我另外添加了策略 -x theirs
以确保自动接受传入的更改。添加了更多语句以确保不会丢失任何本地更改,在没有冲突的情况下优先考虑传入的更改,并且不会报告误报。
这是我的配置文件现在的样子:
image: php:7.1.29
pipelines:
default:
- step:
name: Deploy to dev
deployment: dev
# trigger: manual # Uncomment to make this a manual deployment.
script:
- echo "Deploying to dev..."
- pipe: atlassian/ssh-run:0.2.5
variables:
SSH_USER: 'root'
SERVER: '82.xxx.xx.xx5'
MODE: 'command'
COMMAND: 'cd /home/ubuntu/public_html/dev/ && \
git add . && \
git commit -a -m "local files server commit" && \
(echo "OK"; exit 0) || (c=$?; echo "NOK"; (exit 0)) && \
git pull origin feature/development -X theirs --no-commit && \
git commit -m "Merge" && \
(echo "OK."; exit 0) || (c=$?; echo "NOK"; (exit 0))'
- echo "Deployed!"
我首先在终端中 运行ning git status
解决了这个问题。这个命令说所有的冲突都是固定的,我可以 运行:
git rebase --continue
在我 运行 上面的命令之后,我收到了这条消息:
Successfully rebased and updated refs/heads/main.